习题
计算 n 以内所有正奇数的和?n 值通过键盘输入
#include <stdio.h> int main() { int n,sum; printf("请输入一个整数:"); scanf("%d",&n); while(n!=0) { if(n%2 !=0){ sum += n; } n--; } printf("%d以内所有正奇数的和为%d",n,sum); }
请输入一个整数:100 0以内所有正奇数的和为2500 -------------------------------- Process exited after 3.068 seconds with return value 0 请按任意键继续. . .
计算 1 + 1/(23) + 1/(34) + ...+ 1/(n*(n+1))=?直到最后一相值小于 0.00001 为止。
#include <stdio.h> int main() { double y = 0.0; double n = 2; double m = 1/(n*(n+1)); printf("m = %lf\n",m); printf("n = %lf\n",n); while( m >= 0.00001) { m = 1/(n*(n+1)); y += 1/(n*(n+1)); n++; } y = y+1; printf("y = %lf\n",y); printf("n = %d\n",(int)n); printf("m = %lf",m); return 0; }
m = 0.166667 n = 2.000000 y = 1.496845 n = 317 m = 0.000010 -------------------------------- Process exited after 0.08403 seconds with return value 0 请按任意键继续. . .
计算 1+1/2 - 1/3 + 1/4 - 1/5 ...+1/n=?n ·通过键盘输入(int k=-1)
#include <stdio.h> int main() { double n; double m = 0; printf("输入一个整数n:"); scanf("%lf",&n); while(n>=1) { m += 1/n; n--; } printf("m=%lf",m); return 0; }
输入一个整数n:100 m=5.187378 -------------------------------- Process exited after 60.27 seconds with return value 0 请按任意键继续. . .
计算 n 的阶乘?n! = 123.....*n n 值通过键盘输入
#include <stdio.h> int main() { int n; int m = 1; printf("输入一个整数n:"); scanf("%d",&n); while(n>1) { m *= n; n--; } printf("m=%d",m); return 0; }
输入一个整数n:10 m=3628800 -------------------------------- Process exited after 1.482 seconds with return value 0 请按任意键继续. . .
输出半径为 1~10 的圆面积,面积大于 100 时停止
#include <stdio.h> #define PAI 3.14 int main() { double n,m; while(1) { printf("输入一个圆的半径:"); scanf("%lf",&n); m = n*n*PAI; printf("圆的面积为%lf\n",m); if(m>100) break; } return 0; }
输入一个圆的半径:100 圆的面积为31400.000000 -------------------------------- Process exited after 1.657 seconds with return value 0 请按任意键继续. . .
求输入的十个整数中正数的个数及其平均值
#include <stdio.h> int main() { int a[10],b[10]; double sum = 0; int n = 0; printf("请输入10个整数:"); for(int i=0;i<=9;i++) { scanf("%d",&a[i]); } for(int i=0;i<=9;i++) { if(a[i]>0) { sum += a[i]; printf("%d\n",a[i]); b[n] = a[i]; n++; } } printf("正整数有:"); for(int i=0;i<n;i++) { printf("%d ",b[i]); } double p = sum/(double)n; printf("平均数为:%lf\n",p); }
请输入10个整数:10 10 10 10 10 10 10 10 -10 10 10 10 10 10 10 10 10 10 10 正整数有:10 10 10 10 10 10 10 10 10 平均数为:10.000000 -------------------------------- Process exited after 11.96 seconds with return value 0 请按任意键继续. . .
打印出 100 以内能整除 7 之外的的自然数
#include <stdio.h> int main() { int i; for(i=0;i<101;i++) { if(i%7==0){ printf("%d ",i); } } return 0; }
0 7 14 21 28 35 42 49 56 63 70 77 84 91 98 -------------------------------- Process exited after 0.1568 seconds with return value 0 请按任意键继续. . .
打印乘法表
#include <stdio.h> int main() { int i,j; for(i=1;i<10;i++) { for(j=1;j<i+1;j++) { printf("%dX%d=%d\t",i,j,i*j); } printf("\n"); } return 0; }
1X1=1 2X1=2 2X2=4 3X1=3 3X2=6 3X3=9 4X1=4 4X2=8 4X3=12 4X4=16 5X1=5 5X2=10 5X3=15 5X4=20 5X5=25 6X1=6 6X2=12 6X3=18 6X4=24 6X5=30 6X6=36 7X1=7 7X2=14 7X3=21 7X4=28 7X5=35 7X6=42 7X7=49 8X1=8 8X2=16 8X3=24 8X4=32 8X5=40 8X6=48 8X7=56 8X8=64 9X1=9 9X2=18 9X3=27 9X4=36 9X5=45 9X6=54 9X7=63 9X8=72 9X9=81 -------------------------------- Process exited after 0.1593 seconds with return value 0 请按任意键继续. . .
我国古代数学家张丘建在《算经》一书中提出的数学问题:鸡翁一值钱五,鸡母一值钱三,鸡雏三值钱一。百钱买百鸡,问鸡翁、鸡母、鸡雏各几何?
#include <stdio.h> int main() { int a,b,c; for(a=1;a<100;a++) { for(b=1;b<100;b++) { for(c=1;c<100;c++) { if(5*a+3*b+c/3 == 100&&a+b+c == 100) { printf("%d %d %d\n",a,b,c); } } } } return 0; }
3 20 77 4 18 78 7 13 80 8 11 81 11 6 83 12 4 84 -------------------------------- Process exited after 0.1925 seconds with return value 0 请按任意键继续. . .
从键盘上输入多个无符号整型数据,直到 0 结束,输出所输入数据中的最大值。
#include <stdio.h> int main() { int a[1000]; int i=0; while(i<1000) { scanf("%d",&a[i]); if(a[i]==0) break; } return 0; }
1 2 3 5 6 8 9 7 1 0 -------------------------------- Process exited after 7.483 seconds with return value 0 请按任意键继续. . .
猜拳游戏
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int main()
{
int ai,wj;
int game = 1;
// 设置随机种子
srand(time(NULL));
// 生成随机数 0~2之间的随机数 rand() % 最大范围整数,生成的实际数的范围 0 ~ 最大范围整数 - 1
ai = rand() % 2;
// 设计头
printf("----------------------\n");
printf("----------------------\n");
printf("| 猜拳小游戏v1.0 |\n");
printf("----------------------\n");
printf("----------------------\n");
printf("选择难度(1)【简单/困难】\n");
printf("简单说明(2) \n");
printf("退出游戏(3) \n");
while(game)
{
int a; // 菜单序号
while(1)
{
//处理非法输入
if (scanf("%d", &a) != 1)
{
// 清空输入缓冲区非法字符
while (getchar() != '\n');
printf("请输入数字1~3!\n");
continue;
}
if(a>=1 &&a<=3) break;
printf("请在上述范围内输入!\n");
}
if(a == 1)
{
printf("简单1/困难2\n");
int b;
while(1)
{
// 清空输入缓冲区中的所有字符,直到遇到换行符
while (getchar() != '\n');
//处理非法输入
if (scanf("%d", &b) != 1)
{
// 清空输入缓冲区非法字符
while (getchar() != '\n');
printf("请输入数字1~2!\n");
continue;
}
if(b>=1 &&b<=2) break;
printf("请在上述范围内输入!\n");
}
// 创建一个变量,用来存储玩家自己出拳的序号
int player_gesture;
if(b == 1)
{
printf("简单模式!");
while(1)
{
printf("请出拳:【1】石头 【2】剪刀 【3】布:\n");
//处理非法输入
if (scanf("%d", &player_gesture) != 1)
{
// 清空输入缓冲区非法字符
while (getchar() != '\n');
printf("请输入数字1~2!\n");
continue;
}
if(player_gesture>=1 &&player_gesture<=3) break;
printf("请在上述范围内输入!\n");
}
// 显示玩家出拳信息
const char* player_gesture_name = player_gesture == 1 ?"石头" : player_gesture == 2 ? "剪刀" : "布";
printf("您出:%s\n", player_gesture_name);
// 3. 对手出拳
printf("\n--- 对手出拳 ---\n");
int computer_gesture = 1;
const char* computer_gesture_name = computer_gesture == 1? "石头" : computer_gesture == 2 ? "剪刀" : "布";
// 显示对手出拳信息
printf("出:%s\n", computer_gesture_name);
// 4. 判断胜负
printf("\n--- 判断胜负 ---\n");
// 创建一个变量,用来存储比较的结果
int result = (player_gesture - computer_gesture + 3) % 3;
printf("战况:");
// 比较
if (result == 0) printf("平局!\n");
else if (result == 2) printf("您赢了!\n");
else printf("您输了!\n");
break;
}
if(b == 2)
{
printf("困难模式!");
while(1)
{
printf("请出拳:【1】石头 【2】剪刀 【3】布:\n");
//处理非法输入
if (scanf("%d", &player_gesture) != 1)
{
// 清空输入缓冲区非法字符
while (getchar() != '\n');
printf("请输入数字1~2!\n");
continue;
}
if(player_gesture>=1 &&player_gesture<=3) break;
printf("请在上述范围内输入!\n");
}
// 显示玩家出拳信息
const char* player_gesture_name = player_gesture == 1 ?"石头" : player_gesture == 2 ? "剪刀" : "布";
printf("您出:%s\n", player_gesture_name);
// 3. 对手出拳
printf("\n--- 对手出拳 ---\n");
// 创建一个变量,作为对手的出拳序号,这个序号需要随机生成1~3
int computer_gesture = rand() % 3 + 1;
const char* computer_gesture_name = computer_gesture == 1? "石头" : computer_gesture == 2 ? "剪刀" : "布";
// 显示对手出拳信息
printf("出:%s\n", computer_gesture_name);
// 4. 判断胜负
printf("\n--- 判断胜负 ---\n");
// 创建一个变量,用来存储比较的结果
int result = (player_gesture - computer_gesture + 3) % 3;
printf("战况:");
// 比较
if (result == 0) printf("平局!\n");
else if (result == 2) printf("您赢了!\n");
else printf("您输了!\n");
break;
}
}
if(a == 2)
{
printf("规则说明:剪刀>布>石头>剪刀\n");
}
if(a == 3)
{
game = 0 ;
}
}
printf("\n----- 游戏退出 -----\n");
return 0;
}
// while(getchar() !='\n');