题目:对10个数进行排序。
程序分析:可以利用选择法,即从后9个比较过程中,选择一个最小的与第一个元素交换, 下次类推,即用第二个元素与后8个进行比较,并进行交换。
// 选择排序
#include
#include
#include
using namespace std;
#include
#define N 5
int main()
{
int a[N],i,j,temp;
for(i=0;i<N;i++)
{
scanf("%d",&a[i]);
}
int min;
for(i=0;i<N-1;i++)
{
min=i;
for(j=i+1;j<N;j++)
{
if(a[j]<a[min]) min = j;
}
if(min!=i)
{
temp = a[i];
a[i] = a[min];
a[min] = temp;
}
}
for(i=0;i<N;i++)
{
printf("%d",a[i]);
}
return 0;
}
题目:将一个数组逆序输出。
程序分析:用第一个与最后一个交换。
#include
#define N 10
int main()
{
int a[N]={0,1,2,3,4,5,6,7,8,9};
int i,t;
printf("原始数组是:\n");
for(i=0;i<N;i++)
printf("%d ",a[i]);
for(i=0;i<N/2;i++)
{
t=a[i];
a[i]=a[N-1-i];
a[N-1-i]=t;
}
printf("\n排序后的数组:\n");
for(i=0;i<N;i++)
printf("%d ",a[i]);
printf("\n");
return 0;
}
#include
#include
#include
#include
// 把十进制转成二进制,并保存存在文件里
void printBinaryDigitIntoFile(FILE *fp, int i)
{
assert(i >= 0 && i <= 255);
char str[20];
int r = 2;
itoa(i, str, r); // 重要函数
int length = strlen(str);
int j;
for(j = length; j < 8; j++)
fprintf(fp, "0"); // 前面补0
fprintf(fp, "%s\n", str);
}
int main()
{
FILE *fp = fopen("myData.txt", "w");
int i;
for(i = 0; i <= 255; i++)
{
printBinaryDigitIntoFile(fp, i);
}
fclose(fp);
return 0;
}
// 选择排序
#include
#include
#include
using namespace std;
#include
void swap(int* ,int*);
int main()
{
printf("输入三个待排序的数:");
int a,b,c;
int *pa,*pb,*pc; //1.定义
pa = &a; //2.取地址
pb = &b;
pc = &c;
scanf("%d %d %d",&a,&b,&c);
if(*pa < *pb)//3.解引用
{
swap(pa,pb);
}
if(*pa < *pc)
{
swap(pa,pc);
}
if(*pb < *pc)
{
swap(pb,pc);
}
printf("排序后的结果:");
printf("%d,%d,%d",*pa,*pb,*pc);
return 0;
}
void swap(int *p,int *q)
{
int temp;
temp = *p;
*p = *q;
*q = temp;
}
有n个人围成一圈,顺序排号。从第一个人开始报数(从1到3报数),凡报到3的人退出圈子,问最后留下的是原来第几号的那位。
题目:找到年龄最大的人,并输出。请找出程序中有什么问题
// 选择排序
#include
#include
#include
using namespace std;
#include
struct man{
char name[20];
int age;
}
person[3]={"li",18,"wang",25,"sun",22};
int main()
{
struct man *q,*p;
int i,m =0;
p = person;
//q 可能不被赋值的问题
q = p;
for(i=0;i<3;i++)
{
if(m<p->age)
{
m = p->age;
q = p;
}
p++;
}
printf("%s %d",q->name,q->age);
return 0;
}
#include
struct student
{
int x;
char c;
} a;
int main()
{
a.x=3;
a.c='a';
f(a);
printf("%d,%c",a.x,a.c);
}
f(struct student b)
{
b.x=20;
b.c='y';
}
// 选择排序
#include
#include
#include
using namespace std;
#include
void caizi(void)
{
int n;
char begin;
int count = 1;
srand((int)time(NULL));
int m = (rand() % 100) + 1;
puts("游戏开始,请输入数字:");
while (1)
{
scanf("%d", &n);
if (n == m)
{
printf("猜中了,使用了 %d 次!\n", count);
if (count == 1)
{
printf("你是神级人物了!膜拜\n");
getchar();
printf("你已经达到最高级别,还需要玩吗?Y/N \n");
scanf("%c", &begin);
if (begin == 'Y' || begin == 'y') //重复玩的一个嵌套循环
{
caizi();
}
else
{
printf("谢谢,再见!\n");
}
}
else if (count <= 5)
{
printf("你是王级人物了!非常赞\n");
getchar();
printf("需要挑战最高级别不?Y/N \n");
scanf("%c", &begin);
if (begin == 'Y' || begin == 'y')
{
caizi();
}
else
{
printf("谢谢,再见!\n");
}
}
else if (count <= 10)
{
printf("你是大师级人物了!狂赞\n");
getchar();
printf("需要挑战最高级别不?Y/N \n");
scanf("%c", &begin);
if (begin == 'Y' || begin == 'y')
{
caizi();
}
else
{
printf("谢谢,再见!\n");
}
}
else if (count <= 15)
{
printf("你是钻石级人物了!怒赞\n");
getchar();
printf("需要挑战最高级别不?Y/N \n");
scanf("%c", &begin);
if (begin == 'Y' || begin == 'y')
{
caizi();
}
else
{
printf("谢谢,再见!\n");
}
}
else
{
getchar();
printf("你的技术还有待提高哦!重玩? Y/N\n");
scanf("%c",&begin);
if (begin == 'Y' || begin == 'y')
{
caizi();
}
else
{
printf("谢谢,再见!\n");
}
}
break;
}
else if (n < m)
{
puts("太小了!");
puts("重新输入:");
}
else
{
puts("太大了!");
puts("重新输入:");
}
count++;//计数器
}
}
int main(void)
{
caizi();
system("pause");
return 0;
}
#include
#include
#include
using namespace std;
#include
#include
int main(void)
{
FILE *fp = NULL;
char str[50];
int i,len,k;
printf("请输入一些字符:\n");
gets(str);
len = strlen(str);
for(i=0;i<len;i++)
{
if(str[i]<='z'&&str[i]>='a')
{
str[i]-=32;
}
}
for(k = 0;k<3;k++)
{
printf("%c\n",str[k]);
}
fp = fopen("D:/C++/test.txt","a");
fprintf(fp,"%s",str);
fclose(fp);
// system("pause");
return 0;
}
文件指针的学习:https://blog.csdn.net/qq_44757034/article/details/104696262