C语言期中
1成绩计算及等级转换
小王同学参加了某计算机类课程的考试。考试分为笔试和上机编程测试,满分均为 100 分。
总成绩由笔试成绩 (60%)和上机成绩(40%)组成。如果总成绩在 85-100 分之间,则成绩等级为“优秀”;总成绩在 70-85 分之间, 则成绩等级为“良好”;总成绩在 60-70,则为“及格”;总成绩在 60 分以下则为“不及格”。
编写程序,在键盘上输入小王同学的笔试和上机成绩分数(记为整数),然后计算小王的总成绩(记为整数,不考 虑四舍五入)以及分数等级(不及格(fail)、及格(pass)、良好(good)和优秀(excellent));如果笔试或上机分数输入 为负数或超过 100 分,则提示输入错误(wrong score)。
#include <stdio.h>
int main()
{
int a,b;
int f=0;
scanf("%d%d",&a,&b);
printf("Writing score: %d\n",a);
printf("Testing score: %d\n",b);
f=a*0.6+b*0.4;
if(a>100||a<0||b>100||b<0)
{
printf("Wrong input");
}
else
{
if(f > 85&&f <= 100)
{
printf("Final score is %d, the grade is exellent",f);
}
else if(f >70&&f <= 85)
{
printf("Final score is %d, the grade is good",f);
}
else if(f >60&&f <= 70)
{
printf("Final score is %d, the grade is pass",f);
}
else
//else if(f >0&&f <= 60)
{
printf("Final score is %d, the grade is fail",f);
}
}
return 0;
}
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-JVmSP3lS-1650519406743)(C:\Users\Tait\Desktop\图片\image-20220421114631571.png)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-MLcz7Jo5-1650519406744)(C:\Users\Tait\Desktop\图片\image-20220421115913060.png)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-XeFQNbqY-1650519406744)(C:\Users\Tait\Desktop\图片\image-20220421115955330.png)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-2QkG9jjF-1650519406744)(C:\Users\Tait\Desktop\图片\image-20220421120026579.png)]
2计算满足不等式的最大数值
1. 从键盘输入一个整数 m,如果 m 小于 1,输出:输入错误!
2. 如果 m 大于等于 1,则计算满足如下不等式的最大整数 n: 1 2 + 2 2 + 3 2 + ⋯ + 𝑛 2 ≤ m
注意:不能调用除 stdio.h 之外的函数包。
Write a program to input an integer m, if m<1, output “Wrong input!” If m≥1, find the maximum integer n satisfying the following inequality: 1 ^2 + 2^ 2 + 3^ 2 + ⋯ + 𝑛^ 2 ≤ m
#include <stdio.h>
int main()
{
int m,n,j,i=1;
int sum=0;
scanf("%d",&m) ;
if(m<1)
{
printf("Wrong input!");
}
else
{
do
{
i++;
n=j++;
sum+=i*i;
}
while(sum<=m);
printf("The maximum integer satisfing the inequality is %d",n+1);
}
return 0;
}
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-OLb4zizQ-1650519406745)(C:\Users\Tait\Desktop\图片\image-20220421104812864.png)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-HPOn54MG-1650519406745)(C:\Users\Tait\Desktop\图片\image-20220421104847350.png)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-sh1BRXd8-1650519406745)(C:\Users\Tait\Desktop\图片\image-20220421104909755.png)]
3查找数组元素出现的次数
给定数组 a[10]= {1, 5, 3, 1, 2, 3, 7, 6, 3, 9}。编写程序,从键盘输入 0~9 之间的任意一个数字,查找该数字在数组中 出现的次数、要求用指针方式实现对数组的操作(注:如果未用指针方式,最多得一半分数)。
#include <stdio.h>
int find( int *p, int num);
int main()
{
int a[10]= {1, 5, 3, 1, 2, 3, 7, 6, 3, 9};
int num;
printf("please input any number from 0 to 9:\n");
scanf("%d",&num);
find(a, num);
}
int find( int *p, int num)
{
int n = 0,i = 0;
while(*p)
{
if(*p ==num)
++n;
++p;
}
if(num>=10)
{
printf("wrong input!");
}
else
printf("%d appears %d times",num,n);
}
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-9dNqc4pF-1650519406746)(C:\Users\Tait\Desktop\图片\image-20220421110926139.png)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-6yNaJOc1-1650519406746)(C:\Users\Tait\Desktop\图片\image-20220421111000443.png)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-RhGjgSnC-1650519406746)(C:\Users\Tait\Desktop\图片\image-20220421111456108.png)]
4求矩阵各行元素之和
编写程序,从键盘输入 2 个正整数 m 和 n (1<=m<=4, 1<=n<=4),然后输入矩阵 a(m 行 n 列)中的元素,将 矩阵的元素按 m 行 n 列方式写入到文件 matrix.txt 中,并分别求出各行元素之和,输出到屏幕上。
#include<stdio.h>
#include <stdlib.h>
int main ()
{
int m,n,i,j,sum=0;
scanf("%d %d",&m,&n);
int a[4][4];
for(i=0; i<m; i++)
{
for (j=0; j<n; j++)
{
scanf ("%d",&a[i][j]);
}
}
//写入文件
FILE *fpWrite=fopen("matrix.txt","w");
if(fpWrite==NULL)
{
return 0;
}
for(i=0; i<m; i++)
{
for (j=0; j<n; j++)
{
fprintf(fpWrite,"%d ",a[i][j]);
}
fputc('\n',fpWrite);
}
fclose(fpWrite);
//计算数组之和
for(i=0; i<m; i++)
{
for (j=0; j<n; j++)
{
sum+=a[i][j];
}
printf("sum of row %d is %d\n",i,sum);
sum=0;
}
return 0;
}
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ri2IyU72-1650519406746)(C:\Users\Tait\Desktop\图片\image-20220421112202220.png)]
5求最大和最小温差值
北京 2019 年 1~12 月的最高和最低气温如下 最高(℃) h={10,14,25,28,37,35,38,32,34,30,17,10} 最低(℃) l={-10,-8,-2,3,10,18,19,18,14,1,-6,-10} 编写程序,实现以下功能:
(1)从键盘输入最高和最低温度,分别存入两个一维数组中;
(2 分别求出 1~12 月中每个月的温差 h_l=|h-l|,存入一个一维数组中,并在屏幕上显示
(3)求出温差最大和最小的月份(假设最大值和最小值均是唯一的) 并在屏幕上显示最大和最小温差,以及相 应的月份
#include <stdio.h>
int main()
{
int h[12], l[12], h_l[12];
int i;
for (i = 0; i < 12; i++)
scanf("%d", &h[i]);
for (i = 0; i < 12; i++)
scanf("%d", &l[i]);
for (i = 0; i < 12; i++)
{
int tmp = h[i] - l[i];
if (tmp < 0)
{
tmp = -tmp;
}
h_l[i] = tmp;
}
int min = 0;
for (i = 0; i < 12; i++)
{
if (h_l[i] < h_l[min])
{
min = i;
}
}
int max = 0;
for (i = 0; i < 12; i++)
{
if (h_l[i] > h_l[max])
max = i;
}
printf("high low diff\n");
for (i = 0; i < 12; i++)
{
printf("%-3d %-3d %-3d\n", h[i], l[i], h_l[i]);
}
printf("Max.diff:%d, Month:%d\n", h_l[max], max + 1);
printf("Min.diff:%d, Month:%d", h_l[min], min + 1);
}
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-mzQfgQo9-1650519406747)(C:\Users\Tait\Desktop\图片\image-20220421121413655.png)]
6判断 Armstrong 数
从键盘输入一个 4 位的 10 进制非负整数,判定其是否为乘方和完全数(Armstrong)
主函数已从键盘读入一个整数,调用函数 checkingAmstrong 判定输入的整数是否为 Amstrong 数,然后输出结果。
编写函数 checking Armstrong,判定该整数是否为 Armstrong 数,若是,则返回 1,否则返回 0。
乘方和完全数的特征是:该数的位数作为乘方的幂次,每位数字的乘方之和等于该数。
a^4+b^4+c^4+d^4=abcd
#include <stdio.h>
#include <math.h>
/****************************************
num: a 4-digit integer number
dn: total number of digits
return value: if num is an Armstrong number, return 1, otherwise return 0
****************************************/
int checkingArmstrong(int num, int dn)
{
int a, b, c, d, number = num;
a = num / 1000;
num %= 1000;
b = num / 100;
num %= 100;
c = num / 10;
num %= 10;
d = num;
if (a*a*a*a + b*b*b*b + c*c*c*c + d*d*d*d == number)
return 1;
return 0;
}
int main() {
int num, result=0;
scanf("%d",&num);
if (checkingArmstrong(num, 4) == 1)
printf("%d is an Armstrong number.", num);
else
printf("%d is not an Armstrong number.", num);
return 0;
}
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-9mtfGPlp-1650519406747)(C:\Users\Tait\Desktop\图片\image-20220421115522742.png)]
c + ddd*d == number)
return 1;
return 0;
}
int main() {
int num, result=0;
scanf(“%d”,&num);
if (checkingArmstrong(num, 4) == 1)
printf(“%d is an Armstrong number.”, num);
else
printf(“%d is not an Armstrong number.”, num);
return 0;
}
[外链图片转存中...(img-9mtfGPlp-1650519406747)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-vecXEgZm-1650519406747)(C:\Users\Tait\Desktop\图片\image-20220421115609874.png)]