题目81:809*??=800*??+9*?? 其中??代表的两位数,809*??为四位数,8*??的结果为两位数,
9*??的结果为3位数。求??代表的两位数,及809*??后的结果。
#include <stdio.h>
int main()
{
int n = 0, b = 0; //n表示??
for(n = 10; n < 100; n++)
{
b = 809 * n;
if(((b < 10000)&&(b > 1000))&&((n * 8) < 100)&&((n * 9) >= 100))
{
printf("??的结果是%d\n809*??的结果是%d\n", n, b);
}
}
return 0;
}
运行结果
题目82:八进制转换为十进制
#include <stdio.h>
int main()
{
int n = 0;
printf("请输入一个八进制整数(如015):");
scanf("0%o", &n);
printf("转换为十进制后是%d\n", n);
return 0;
}
运行结果
#include <stdio.h>
#include <math.h>
int main()
{
int i = 0, n = 0, m = 0;
printf("请输入八进制数:");
scanf("%d", &n);
for(i = 0; n / 10 != 0; i++)
{
m += n % 10 * (int)pow(8, i);
n = n / 10;
}
m += n * (int)pow(8, i);
printf("对应的十进制数:%d\n",m);
return 0;
}
运行结果
题目83:求0—7所能组成的奇数个数
#include <stdio.h>
int main()
{
int ge = 0, shi = 0, bai = 0, number = 0, count = 0;
for(bai = 0; bai <= 7; bai++)
{
for(shi = 0; shi <= 7; shi++)
{
for(ge = 0; ge <= 7; ge++)
{
number = bai * 100 + shi * 10 + ge;
if(number % 2 == 1)
{
count++;
}
}
}
}
printf("0—7所能组成的奇数个数为%d\n", count);
return 0;
}
运行结果
#include <stdio.h>
int main()
{
int ge = 0, shi = 0, bai = 0, number = 0, count = 0;
for(bai = 0; bai <= 7; bai++)
{
for(shi = 0; shi <= 7; shi++)
{
for(ge = 0; ge <= 7; ge++)
{
number = bai * 100 + shi * 10 + ge;
if(number % 2 == 1)
{
count++;
}
}
}
}
printf("0—7所能组成的奇数个数为%d\n", count);
return 0;
}
运行结果
#include <stdio.h>
int main()
{
int n, s, sum = 0;
for(n = 1; n <= 8; n++) //表示数有几位
{
if(n == 1) //最后一位是奇数就是奇数,有4种情况
s = 4;
else if(n ==2) //两位数7*4种,三位数7*8*4,四位数7*8*8*4……
s = 4 * 7;
else
s = s * 8;
printf("%d位数奇数有%d个\n", n, s);
sum = sum + s;
}
printf("总奇数有%d个\n", sum);
return 0;
}
运行结果
题目84:一个偶数总能表示为两个素数之和
#include <stdio.h>
#include <math.h>
//判断一个数是否为素数
int IsPrime(int number)
{
int n = 0, j = 0, flag = 1;
n = int(sqrt(number));
for(j = 2; j <= n; j++)
{
if(number % j == 0)
{
flag = 0;
}
}
if((flag == 1)&&(number != 1))
{
return 1;
}
else
{
return 0;
}
}
int main()
{
int even = 0, i = 0, jiashu = 0, flag = 0;
printf("请输入一个偶数:");
scanf("%d", &even);
for(i = 2; i < even; i++)
{
//把偶数分成两个数的和,然后判断两个数是否为素数
if(IsPrime(i)&&IsPrime(even - i))
{
break;
}
}
printf("%d能表示为素数%d和%d之和\n", even, i, even - i);
return 0;
}
运行结果
题目85:判断一个素数能被几个9整除
#include <stdio.h>
int main()
{
int prime = 0, i = 0, n = 9;
printf("请输入一个素数:");
scanf("%d", &prime);
for(i = 1; ; i++)
{
if(n % prime ==0)
{
break;
}
else
{
n = n * 10 + 9;
}
}
printf("%d能被%d个9即%d整除\n", prime, i, n);
return 0;
}
运行结果
题目86:两个字符串连接程序
/*
*日期:2020年4月27日
*题目:两个字符串连接程序
*输入:
*输出:
*/
#include <stdio.h>
#include <string.h>
int main()
{
char str1[30] = {0}, str2[30] = {0};
char *p = NULL;
printf("请输入字符串1:");
gets(str1);
printf("请输入字符串2:");
gets(str2);
printf("连接后的字符串为%s\n", strcat(str1, str2));
return 0;
}
运行结果
题目87:回答结果(结构体变量传递)
#include “stdio.h”
struct student
{
int x;
char c;
} a;
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 "stdio.h"
struct student
{
int x;
char c;
} a;
void f(struct student b) //结构体变量a做实参
{
b.x=20;
b.c='y'; //值不能返回主函数
}
int main()
{
a.x=3;
a.c='a';
f(a);
printf("%d,%c\n",a.x,a.c);
return 0;
}
运行结果
题目88:读取7个数(1—50)的整数值,每读取一个值,程序打印出该值个数的*
#include <stdio.h>
//打印*
void print(int n)
{
int i = 0;
for(i = 0; i < n; i++)
{
printf("*");
}
printf("\n");
}
int main()
{
int i = 0, n = 0;
printf("读取7个数\n");
for(i = 0; i < 7; i++)
{
printf("请输入一个数(1-50):");
scanf("%d", &n);
print(n);
}
return 0;
}
运行结果
题目89:某个公司采用公用电话传递数据,数据是四位的整数,
在传递过程中是加密的,加密规则如下:
每位数字都加上5,然后用和除以10的余数代替该数字,
再将第一位和第四位交换,第二位和第三位交换。
#include <stdio.h>
int main()
{
int n = 0, qian = 0, bai = 0, shi = 0, ge = 0, t = 0;
printf("请输入需要加密的数字:");
scanf("%d", &n);
qian = n / 1000;
bai = n / 100 % 10;
shi = n / 10 % 10;
ge = n % 10;
qian = (qian + 5) % 10;
bai = (bai + 5) % 10;
shi = (shi + 5) % 10;
ge = (ge + 5) % 10;
t = qian; qian = ge; ge = t;
t = bai; bai = shi; shi = t;
printf("加密后的数字是%d%d%d%d\n", qian, bai, shi, ge);
return 0;
}
运行结果
题目90:专升本一题,读结果。
#include “stdio.h”
#define M 5
main()
{
int a[M]={1,2,3,4,5};
int i,j,t;
i=0;j=M-1;
while(i
{
t=*(a+i);
(a+i)=(a+j);
(a+j)=t;
i++;j–;
}
for(i=0;i printf("%d",(a+i));
}
#include <stdio.h>
#include <stdlib.h>
#define M 5
int main()
{
int a[M] = {1, 2, 3, 4, 5};
int i = 0, j = M - 1, t;
while(i < j)
{
t = *(a + i); //正数第i个数和倒数第i个数交换
*(a + i) = *(a + j);
*(a + j) = t;
i++;
j--;
}
for(i = 0; i < M; i++)
{
printf("%d\n", *(a + i));
}
return 0;
}
运行结果
题目91:时间函数举例1
#include <stdio.h>
#include <time.h>
int main()
{
time_t rawtime; //相当于long int rawtime,而在64位系统int和long int都是4字节
struct tm *timeinfo; //指向tm结构的指针timeinfo,tm是系统预设的结构体
time(&rawtime); //time函数原型,time_t time(time_t *t);返回值是1970-1-1至今的秒数,并将t指向其
timeinfo = localtime(&rawtime); //localtime函数将偏移的秒数转换,返回本地时间(tm结构)
printf("当前本地时间为%s", asctime(timeinfo)); //asctime函数将tm结构转换为字符串
return 0;
}
运行结果
题目92:时间函数举例2
//difftime函数原型double difftime(time_t time2,time_t time1);比较两个时刻的时间差
//因为time返回值是long型,所以时间差是整数,返回值用double型可能是因为有可能超过long型表示范围
#include <stdio.h>
#include <time.h>
int main()
{
time_t start, end;
int i;
start = time(NULL); //time(NULL)则返回当前时间
for(i = 0; i < 30000; i++)
{
printf("%d\n", i);
}
end = time(NULL);
printf("时间间隔为%6.1f\n",difftime(end,start));
return 0;
}
运行结果
题目93:时间函数举例3
#include <stdio.h>
#include <time.h>
int main()
{
int i;
clock_t start, end;
double diff;
start = clock();
for(i = 1; i <= 10000000; i++) //进行一千万次空循环
{
;
}
end = clock(); //clock函数的返回值为long型,单元为计时单元
//计算进行一千万次空循环需要的时间,CLOCKS_PER_SEC宏定义,表示1秒钟有多少个计时单元
diff = (double)(end - start)/CLOCKS_PER_SEC;
//VC++6.0中CLOCKS_PER_SEC = 1000,因此可以理解为clock()返回值单位是毫秒
printf("%f秒\n", diff);
return 0;
}
运行结果
题目94:猜数游戏
#include <stdio.h>
int main()
{
int number = 0, guess = 0;
printf("请输入一个数字:");
scanf("%d", &number);
while(guess != number)
{
printf("请猜一个数字:");
scanf("%d", &guess);
if(guess < number)
{
printf("猜小了\n");
}
else if(guess > number)
{
printf("猜大了\n");
}
else
{
printf("猜对了\n");
}
}
return 0;
}
运行结果
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int main()
{
int m, n = 0, count = 1;
srand(time(NULL)); //利用系统时间作为种子产生一个随机数序列
m = (rand()%100) + 1; //随机产生一个1-100的数
printf("猜数游戏1-100\n");
while(n != m)
{
printf("请猜一个数:");
scanf("%d", &n);
if(n == m)
{
printf("你猜中了!用了%d次\n", count);
}
else if(n < m)
{
printf("太小了\n");
count++;
}
else if(n > m)
{
printf("太大了\n");
count++;
}
}
return 0;
}
运行结果
题目95:实时显示当前时间
#include <stdio.h>
#include <time.h>
#include <windows.h>
int main()
{
time_t t;
struct tm *timeinfo;
while(1)
{
t = time(NULL);
timeinfo = localtime(&t);
printf("当前时间为:%s", asctime(timeinfo));
Sleep(990);
system("cls");
}
return 0;
}
运行结果
题目96:计算字符串中子串出现的次数
#include <stdio.h>
#include <string.h>
int main()
{
char a[50], b[20];
int i, j, k, count = 0;
printf("请输入一串字符:");
gets(a);
printf("请输入查找的字符串:");
gets(b);
for(i = 0; i < strlen(a); i++) //strlen函数求字符串长度
{
k = i; //从a字符串中第i个字符开始与b比较
//对比字符串a与b中的字符,首个字符相同后对比后续字符
for(j = 0; j < strlen(b)&&(a[k]==b[j]); j++)
{
k++;
}
if(j == strlen(b)) //j==strlen(b)表明b中字符全部对比完且相同
{
count++;
}
}
printf("%s出现了%d次\n", b, count);
return 0;
}
运行结果
题目97:从键盘输入一些字符,逐个把它们送到磁盘上去,直到输入一个#为止。
#include <stdio.h>
#include <stdlib.h>
int main()
{
FILE *fp = NULL; //定义指向文件的指针
char filename[20]; //存放文件名
char ch;
printf("将文件保存到:");
gets(filename);
if((fp = fopen(filename, "w")) == NULL) //以写入方式打开文件,使fp指向该文件
{
printf("无法打开此文件");
exit(0);
}
printf("输入需要存储的字符,以#结束\n");
while((ch = getchar())!='#')
{
fputc(ch, fp); //写入字符到文件
}
fclose(fp);
fp = NULL;
return 0;
}
运行结果
题目98:从键盘输入一个字符串,将小写字母全部转换成大写字母,
然后输出到一个磁盘文件“test”中保存。输入的字符串以!结束。
#include <stdio.h>
#include <stdlib.h>
int main()
{
char str[50];
FILE *fp;
int i = 0;
if((fp = fopen("test.txt", "w")) == NULL)
{
printf("无法打开文件");
exit(0);
}
printf("输入一串字符:");
gets(str);
while(str[i] != '!')
{
if(str[i] >= 'a' && str[i] <= 'z')
{
str[i] = str[i] - 32;
}
fputc(str[i], fp);
i++;
}
fclose(fp);
fp = NULL;
return 0;
}
题目99:有两个磁盘文件A和B,各存放一行字母,要求把这两个文件中的信息合并
(按字母顺序排列), 输出到一个新文件C中。
#include <stdio.h>
#include <stdlib.h>
int main()
{
char A[30], B[30], C[60];
char ch, temp;
int i, j, numA, numB, numC;
FILE *fpA, *fpB, *fpC;
fpA = fopen("A.txt", "r");
printf("文件A中字母为:");
for(i = 0; (ch = fgetc(fpA)) != EOF; i++) //提取文件A中的字符
{
A[i] = ch;
printf("%c", A[i]);
}
numA = i; //numA记录A中字符数,第(0-i)个
fclose(fpA);
fpA = NULL;
printf("\n");
fpB = fopen("B.txt", "r");
printf("文件B中字母为:");
for(i = 0; (ch = fgetc(fpB)) != EOF; i++) //提取文件B中的字符
{
B[i] = ch;
printf("%c", B[i]);
}
numB = i; //numA记录B中字符数,第(0-i)个
fclose(fpB);
fpA = NULL;
printf("\n");
for(i = 0; i < numA; i++)
{
C[i] = A[i];
}
for(j = 0; j < numB; j++)
{
C[i] = B[j];
i++;
}
numC = i; //numC记录C中字符数
for(i = 0; i < numC; i++) //排序
{
for(j = i+1; j< numC; j++)
{
if(C[i] > C[j])
{
temp = C[i];
C[i] = C[j];
C[j] = temp;
}
}
}
if((fpC = fopen("C.txt", "w"))== NULL)
{
printf("无法打开文件C");
exit(0);
}
for(i = 0; i < numC; i++)
{
fputc(C[i], fpC);
}
fclose(fpC);
fpC = NULL;
return 0;
}
题目100:有五个学生,每个学生有3门课的成绩,从键盘输入以上数据(包括学生号,姓名,三门课成绩),计算出
平均成绩,况原有的数据和计算出的平均分数存放在磁盘文件"stud"中。
#include <stdio.h>
#include <stdlib.h>
struct Student
{
int num;
char name[10];
int score[3];
double aver;
};
int main()
{
int i;
FILE *fp = NULL;
struct Student stu[5];
for(i = 0; i < 5; i++)
{
printf("输入第%d个学生的学号 姓名 三门课成绩:", i+1);
scanf("%d %s %d %d %d", &stu[i].num, &stu[i].name, &stu[i].score[0], &stu[i].score[1], &stu[i].score[2]);
stu[i].aver = (double)(stu[i].score[0] + stu[i].score[1] + stu[i].score[2]) / 3;
}
if((fp = fopen("stud", "w")) == NULL)
{
printf("无法打开文件stud");
exit(0);
}
for(i = 0; i < 5; i++)
{
fprintf(fp, "%d %s %d %d %d %.1f\n", stu[i].num, stu[i].name, stu[i].score[0], stu[i].score[1], stu[i].score[2], stu[i].aver);
}
fclose(fp);
fp = NULL;
return 0;
}