1、从键盘输入 10 个考生成绩,计算并输出平均成绩、最高分、最低分
#include <stdio.h>
int main()
{
float score[10];
float avg,max,min;
for(int i = 0;i < 10;i++)
{
scanf("%f",&score[i]);
}
max = min = avg = score[0];
for(int i = 1;i < 10;i++)
{
if(score[i]>max) max = score[i];
if(score[i]<min) min = score[i];
avg += score[i];
}
avg /= 10;
printf("avg=%.2f max=%.2f min=%.2f\n",avg,max,min);
return 0;
}
2、输入一个整数 n,计算并输出 1^2 + 2^2 + ... + n^2 的值
#include <stdio.h>
int main()
{
int n;
int sum = 0;
scanf("%d",&n);
for(int i = 1;i <= n;i++)
{
sum += i*i;
}
printf("%d\n",sum);
return 0;
}
3、使用 while 循环计算并输出 1 + 2 + ... + 100 的和
#include <stdio.h>
int main()
{
int i = 1;
int sum = 0;
while (i <= 100)
{
sum += i;
i++;
}
printf("%d\n",sum);
return 0;
}
4、使用 do-while 循环输出 ASCII 码值从 33 到 127 对应的字符,每个字符后输出一个空格
#include <stdio.h>
int main()
{
int ascii = 33;
do
{
printf("%c ", ascii);
ascii++;
}while(ascii <= 127);
printf("\n");
return 0;
}
注:ASCII 码值 127 对应的是 DEL(Delete)字符,它是一个控制字符,不是可打印字符。
5、编程输出九九乘法表(1×1 到 9×9)
#include <stdio.h>
int main()
{
int i,j;
for(i = 1;i <= 9;i++)
{
for(j = 1;j <= i;j++)
{
printf("%d*%d=%d ",j,i,j*i);
}
printf("\n");
}
return 0;
}
6、计算并输出 1 到 100 之间所有能被 3 整除的整数之和
#include <stdio.h>
int main()
{
int sum = 0;
int i;
for(i = 1;i <= 100;i++)
{
if(i % 3 == 0)
{
sum += i;
}
}
printf("%d\n",sum);
return 0;
}
7、输入一个整数,统计它有几位数(注:负号不算位数)
#include <stdio.h>
int main()
{
int n, count = 0;
scanf("%d",&n);
if(n < 0) n = -n;
if(n == 0) count = 1;
while(n > 0){
count++;
n /= 10;
}
printf("%d\n",count);
return 0;
}
8、输出 1 到 100 之间满足“是 7 的倍数或个位数字为 7”的所有整数,并统计这些整数的个数
#include <stdio.h>
int main()
{
int count = 0;
for(int i = 1;i <= 100;i++)
{
if(i % 7 == 0 || i % 10 == 7)
{
printf("%d ",i);
count++;
}
}
printf("\ncount=%d\n",count);
return 0;
}
9、从键盘输入一个正整数 n(n>=1),输出 n 的所有正因子(从小到大),并在最后输出因子个数
#include <stdio.h>
int main()
{
int n,count = 0;
scanf("%d",&n);
for(int i = 1;i <= n;i++)
{
if(n % i == 0)
{
printf("%d ",i);
count++;
}
}
printf("\ncount=%d\n",count);
return 0;
}
10、找出 1 到 500 之间满足以下条件的所有整数并输出:除以 3 余 2,除以 5 余 3,除以 7 余 4;最后输出个数
#include <stdio.h>
int main()
{
int count = 0;
for(int i = 1;i <= 500;i++)
{
if(i % 3 == 2 && i % 5 == 3 && i % 7 == 4)
{
printf("%d ",i);
count++;
}
}
printf("\ncount=%d\n",count);
return 0;
}
11、输入一个整数,将其倒序输出,并输出各位数字之和
#include <stdio.h>
int main()
{
int n,rev = 0,sum = 0;
scanf("%d",&n);
while(n > 0)
{
int digit = n % 10;
rev = rev * 10 + digit;
sum += digit;
n /= 10;
}
printf("rev=%d\nsum=%d\n",rev,sum);
return 0;
}
12、输入一个不多于 5 位的正整数 n,分别输出它的每一位数字(从高位到低位),数字之间用空格分隔
#include <stdio.h>
int main()
{
int n;
scanf("%d",&n);
if(n >= 10000) printf("%d ",n / 10000);
if(n >= 1000) printf("%d ",(n / 1000) % 10);
if(n >= 100) printf("%d ",(n / 100) % 10);
if(n >= 10) printf("%d ",(n / 10) % 10);
printf("%d\n",n % 10);
return 0;
}
13、从键盘输入一个字符,如果是 +、-、*、/ 则输出对应英文单词:plus、minus、multiply、divide;否则输出 sorry, you are wrong。要求使用 switch 语句实现
#include <stdio.h>
int main()
{
char c;
scanf("%c",&c);
switch(c)
{
case '+': printf("plus\n"); break;
case '-': printf("minus\n"); break;
case '*': printf("multiply\n"); break;
case '/': printf("divide\n"); break;
default: printf("sorry, you are wrong\n");
}
return 0;
}
14、从键盘输入 10 个整数,用冒泡排序按升序输出
#include <stdio.h>
int main()
{
int a[10];
for(int i = 0;i < 10;i++)
{
scanf("%d",&a[i]);
}
for(int i = 0;i < 9;i++)
{
for(int j = 0;j < 9 - i;j++)
{
if(a[j] > a[j + 1])
{
int temp = a[j];
a[j] = a[j + 1];
a[j + 1] = temp;
}
}
}
for(int i = 0;i < 10;i++)
{
printf("%d ",a[i]);
}
printf("\n");
return 0;
}
15、使用结构体保存学生三门课成绩(语文、数学、英语),输入三门成绩,输出平均分(保留 1 位小数)
#include <stdio.h>
struct Student
{
int chinese;
int math;
int english;
};
int main()
{
struct Student s;
scanf("%d %d %d", &s.chinese, &s.math, &s.english);
float avg = (s.chinese + s.math + s.english) / 3.0;
printf("avg=%.1f\n",avg);
return 0;
}
16、输入 10 个整数存入数组,若最大值或最小值出现多次,则取第一次出现的位置;用指针交换函数交换这两个位置的元素,输出交换后的数组。若最大值与最小值在同一位置(例如全部相等),数组不变
#include <stdio.h>
void swap(int *a, int *b)
{
int temp = *a;
*a = *b;
*b = temp;
}
int main()
{
int a[10];
for(int i = 0;i < 10;i++)
{
scanf("%d",&a[i]);
}
int max_idx = 0,min_idx = 0;
for(int i = 1;i < 10;i++)
{
if(a[i] > a[max_idx]) max_idx = i;
if(a[i] < a[min_idx]) min_idx = i;
}
if(max_idx != min_idx)
{
swap(&a[max_idx],&a[min_idx]);
}
for(int i = 0;i < 10;i++)
{
printf("%d ",a[i]);
}
printf("\n");
return 0;
}
17、输入一个字符串 S(不含空格),使用指针遍历字符串(不调用 strlen、strcpy 等),统计并输出大写字母、小写字母、数字字符的个数
#include <stdio.h>
int main()
{
char S[100],*p = S;
int upper = 0,lower = 0,digit = 0;
scanf("%s",S);
while(*p != '\0')
{
if(*p >= 'A' && *p <= 'Z') upper++;
else if(*p >= 'a' && *p <= 'z') lower++;
else if(*p >= '0' && *p <= '9') digit++;
p++;
}
printf("upper=%d\nlower=%d\ndigit=%d\n",upper,lower,digit);
return 0;
}
18、编写函数 int is_prime(int n)与主函数main 判断 n 是否为素数(是返回 1,否则返回 0);主函数输入 n 并输出 YES 或 NO
#include <stdio.h>
int is_prime(int n)
{
if(n <= 1) return 0;
if(n == 2) return 1;
if(n % 2 == 0) return 0;
for(int i = 3;i * i <= n;i += 2)
{
if(n % i == 0) return 0;
}
return 1;
}
int main()
{
int n;
scanf("%d",&n);
if(is_prime(n)) printf("YES\n");
else printf("NO\n");
return 0;
}
19、从键盘输入 10 个整数,输出“第二大且不同于最大值”的数(有重复时只算不同值)。若不存在第二大(例如全相等),输出 no second
#include <stdio.h>
int main()
{
int a[10];
for(int i = 0;i < 10;i++)
{
scanf("%d",&a[i]);
}
int max = -1000000,second = -1000000;
for(int i = 0;i < 10;i++)
{
if(a[i] > max) max = a[i];
}
for(int i = 0; i < 10; i++)
{
if(a[i] < max && a[i] > second) second = a[i];
}
if(second == -1000000) printf("no second\n");
else printf("second=%d\n",second);
return 0;
}
20、从键盘输入一个 5 位正整数,判断它是否为回文数(个位与万位相同,十位与千位相同)。是则输出 YES,否则输出 NO
#include <stdio.h>
int main()
{
int n;
scanf("%d",&n);
int wan = n / 10000;
int qian = (n / 1000) % 10;
int shi = (n / 10) % 10;
int ge = n % 10;
if(wan == ge && qian == shi) printf("YES\n");
else printf("NO\n");
return 0;
}