c语言 试题总结
1965. 2021C语言课前3 while循环
1. 洗衣服
#include <stdio.h>
#include <stdlib.h>
int main()
{int n,m,mt=0;
while(scanf("%d%d",&n,&m)!=EOF)
{mt=n/m;
printf("%d\n",mt);}
return 0;
}
EOF,为End Of File的缩写,通常在文本的最后存在此字符表示资料结束。
要注意的是:在终端(黑框)中手动输入时,系统并不知道什么时候到达了所谓的“文件末尾”,因此需要用<Ctrl + z>组合键然后按 Enter 键的方式来告诉系统已经到了EOF,这样系统才会结束while.
https://blog.csdn.net/henu1710252658/article/details/83040281
1966.2021C语言课前4 for循环
1.求绝对值最大值
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
int main()
{
int i, n, a, fa, max, maxold;
scanf("%d", &n);
scanf("%d", &a);
max = ((a >= 0)? a : -a);
maxold = a;
for(i = 1; i < n; i++)
{
scanf("%d", &a);
fa = a;
if(a < 0)
{
fa = -a;
}
if(max < fa)
{
max = fa;
maxold = a;
}
}
printf("%d\n", maxold);
return 0;
}
不能使用abs函数,会超时(runtime error)
2.判断素数
#include <stdio.h>
#include <stdlib.h>
int main()
{
int n,i;
int flag=1;
scanf("%d",&n);
for(i=2; i<n; i++)
{
if(n%i==0)
flag=0;
}
if(n!=1)
{if(flag==1)
printf("This is a prime.");
else
printf("This is not a prime.");
}
else
printf("This is not a prime.");
return 0;
}
质数是指在大于1的自然数中,除了1和它本身以外不再有其他因数的自然数。
3.最大公约数与最小公倍数
#include <stdio.h>
int main()
{
int m,n,max,min,b,c,g;
//printf("请输入两个整数:\n");
scanf("%d%d",&m,&n);
if(m<n){
g=m;
m=n;
n=g;
}
c=m%n;
b=m*n;
while(c!=0)
{
m=n;
n=c;
c=m%n;
}
max=n;
min=b/max;
printf("%d\n%d\n",max,min);
return 0;
}
一、最大公约数求法
(1)辗转相除法
设有两整数a和b:
① a%b得余数c
② 若c==0,则b即为两数的最大公约数
③ 若c!=0,则a=b,b=c,再回去执行①。
例如求27和15的最大公约数过程为:
27÷15 余12
15÷12 余3
12÷3 余0
因此,3即为最大公约数。
(2)相减法
设有两整数a和b:
① 若a>b,则a=a-b
② 若a<b,则b=b-a
③ 若a==b,则a(或b)即为两数的最大公约数
④ 若a!=b,则再回去执行①。
例如求27和15的最大公约数过程为:
27-15=12( 15>12 )
15-12=3( 12>3 )
12-3=9( 9>3 )
9-3=6( 6>3 )
6-3=3( 3==3 )
因此,3即为最大公约数。
二、求最小公倍数算法
最小公倍数=两整数的乘积÷最大公约数
4.数列求和
#include <stdio.h>
#include <stdlib.h>
int main()
{
int a,n,i,s,m;
scanf("%d",&a);
scanf("%d",&n);
s=0;
m=a;
for(i=1; i<n; i++)
{
s=s+m; //让个位等于a
m=m*10+a;//进位后再补a
}
s=s+m;
printf("%d\n",s);
return 0;
}
m*10 好办法
5.做乘法
#include <stdio.h>
int main()
{
int n,i,m;
scanf("%d",&n);
for(i=1; i<=n; i++)
{
m=i*n;
printf("%d*%d=%d\n",n,i,m);
}
return 0;
}
2063. 2021C实验5——函数
B . 字符串连接
#include <stdio.h>
main()
{
char a[100],b[100];
int i=0,j=0;
//printf("Please input 2 strings:\n");
gets(a); //输入字符串啊,a,b
gets(b);
while(a[i]!='\0')
i++; // i 表示字符串a的'\0'所在的位置
while(b[j]!='\0') //将b中字符一个个赋值给'\0'以及其后面的位置,i++,j++控制一一对应
a[i++]=b[j++];
a[i]='\0' ; //给一个结束标志
puts(a); //输出
return 0;
}
注意字符串的定义
输入输出流 gets和puts
在while循环中 i 表示字符串a的’\0’所在的位置
while(a[i]!='\0')
i++;
while(b[j]!='\0') //将b中字符一个个赋值给'\0'以及其后面的位置,i++,j++控制一一对应
a[i++]=b[j++];
先将i加到a的尾端,再在后面加上b串的内容,最后给a[i]一个结束标志a[i]=’\0’
实验1
A . 鲁东信电的密码
#include<stdio.h>
#define N 256
int main() {
char str[N]; int i,m;
scanf("%d",&m);
scanf("%s",str);
i=0;
while ( str[i]!=0 ) {
if ( str[i]>='a' && str[i]<='z' ) str[i]=(str[i]-'a'+m)%26+'a';
else if ( str[i]>='A' && str[i]<='Z' ) str[i]=(str[i]-'A'+m)%26+'A';
i++;
}
printf("%s\n",str);
}
B . 圆柱和圆球
#include <stdio.h>
int main()
{
double h, r, l, s, sq, vq, vz;
const double pi = 3.1415926;
scanf("%lf %lf",&r,&h);
l = 2 * pi * r;
s = r * r * pi;
sq = 4 * pi * r * r;
vq = (4.0 / 3.0 * pi * r * r * r);
vz = pi * r * r * h;
printf("%.2lf %.2lf %.2lf %.2lf %.2lf",l,s,sq,vq,vz);
return 0;
}
**1.**C语言中printf输出float和double都可以用%f,而double型数据还可以用%lf。
**2.**scanf当中若是对双精度的变量赋值是必须是%后跟lf,而printf当中可以用%f也可以用%lf没有限制。
实验2——选择结构
A . 成绩的等级转换***
#include<stdio.h>
int main()
{
int score[110],n;
scanf("%d",&n);
for(int i = 0;i<n;i++){
scanf("%d",&score[i]);
}
for(int i = 0;i<n;i++){
if (score[i]<0 || score[i]>100)
{
printf("input error\n");
}
else
{
switch(score[i]/10)
{
case 0:
case 1:
case 2:
case 3:
case 4:
case 5:printf("E\n");break;
case 6:printf("D\n");break;
case 7:printf("C\n");break;
case 8:printf("B\n");break;
case 9:
case 10:printf("A\n");break;
}
}}
return 0;
}
*** stack smashing detected ***: <unknown> terminated
注意数组大小是否满足要求
B . 四个整数的排序
#include<stdio.h>
int main()
{
int a,b,c,d,h;
scanf("%d%%%d%%%d%%%d",&a,&b,&c,&d); //选择输入
if (b<a)
h=a, a=b, b=h;
if (c<a)
h=a, a=c, c=h;
if (d<a)
h=a, a=d, d=h;
if (c<b)
h=b, b=c, c=h;
if (d<b)
h=b, b=d, d=h;
if (d<c)
h=c, c=d, d=h;
printf("%d %d %d %d",a,b,c,d);
return 0;
}
C . 正整数的变换***
#include <stdio.h>
int main(){
int a,n,h;
int f[10];
scanf("%d",&a);
while(a!=0){
h=a%10;
a=a/10;
f[n]=h;
n++;
//TODO
}
printf("%d\n",n);
for(int i =n-1;i>=0;i--){
if(i!=0){
printf("%d ",f[i]);
//TODO
}else{printf("%d\n",f[i]);}
}
for(int i =0;i<n;i++){
printf("%d",f[i]);
}
}
注意输出格式控制
如何让最后一个字符不空格***
for(int i =n-1;i>=0;i--){
if(i!=0){
printf("%d ",f[i]);
//TODO
}else{printf("%d\n",f[i]);}
}
如果i是数组要输出的最后一个字符,那就进行if判断
D . 判断闰年***
#include<stdio.h>
int main()
{
int a,y;
int s[1001];
scanf("%d",&a);
for(int i =0;i<a;i++){
scanf("%d",&s[i]);
}
for(int i =0;i<a;i++){
y=s[i];
if((y%100!=0&&y%4==0)||y%400==0)
printf("YES\n");
else
printf("NO\n");
}
return 0;
}
判断闰年的方法
f((y%100!=0&&y%4==0)||y%400==0)
实验3
B . 找这样的5位数
#include<stdio.h>
int main(){
int n,i;
while(scanf("%d",&n)!=EOF){
int m,k,t;
int sum=0;
int ans=0;
for(i=10000;i<=99999;i++)
{
m=i/1000;
k=i%100;
t=i/100%10;
if(m%n==0&&k%n==0&&t%n==0){
++sum;
if(sum%n==0)
printf("%d\n",i);
else
printf("%d ",i);
}
}
}
return 0;
}
数字分割
C . 二分法解方程
#include<stdio.h>
#include<math.h>
int main()
{
double x0,x1, f, fd;
x1=10;
do {
x0=x1;
f = 2 * x0 * x0 * x0 - 4 * x0 * x0 + 3 * x0 - 6;
fd = 6 * x0 * x0 - 8 * x0 + 3;
x1 = x0 - f / fd;
} while (fabs(x0-x1) >=1e-2);
printf("%.6f", x1);
return 0;
}
https://blog.csdn.net/qq_45891676/article/details/107906949?spm=1001.2101.3001.6650.1&utm_medium=distribute.pc_relevant.none-task-blog-2%7Edefault%7ECTRLIST%7Edefault-1.no_search_link&depth_1-utm_source=distribute.pc_relevant.none-task-blog-2%7Edefault%7ECTRLIST%7Edefault-1.no_search_link
ude<stdio.h>
#include<math.h>
int main()
{
double x0,x1, f, fd;
x1=10;
do {
x0=x1;
f = 2 * x0 * x0 * x0 - 4 * x0 * x0 + 3 * x0 - 6;
fd = 6 * x0 * x0 - 8 * x0 + 3;
x1 = x0 - f / fd;
} while (fabs(x0-x1) >=1e-2);
printf("%.6f", x1);
return 0;
}
https://blog.csdn.net/qq_45891676/article/details/107906949?spm=1001.2101.3001.6650.1&utm_medium=distribute.pc_relevant.none-task-blog-2%7Edefault%7ECTRLIST%7Edefault-1.no_search_link&depth_1-utm_source=distribute.pc_relevant.none-task-blog-2%7Edefault%7ECTRLIST%7Edefault-1.no_search_link