c语言 试题总结

c语言 试题总结

1965. 2021C语言课前3 while循环

1. 洗衣服

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-BteRE0gL-1639551698437)(C:\Users\91053\AppData\Roaming\Typora\typora-user-images\image-20211115191705723.png)]

#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.求绝对值最大值

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-HDiCg5su-1639551698438)(C:\Users\91053\AppData\Roaming\Typora\typora-user-images\image-20211116152604862.png)]

#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.判断素数

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-wExUJWbt-1639551698439)(C:\Users\91053\AppData\Roaming\Typora\typora-user-images\image-20211116153220294.png)]

#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.最大公约数与最小公倍数

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-2ytnjuX8-1639551698439)(C:\Users\91053\AppData\Roaming\Typora\typora-user-images\image-20211116161630330.png)]

#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.数列求和

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-SGcxQxHq-1639551698440)(C:\Users\91053\AppData\Roaming\Typora\typora-user-images\image-20211116164910858.png)]

#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.做乘法

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-83o1dxss-1639551698441)(C:\Users\91053\AppData\Roaming\Typora\typora-user-images\image-20211116170538504.png)]

#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 . 字符串连接

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-W5OC4y3b-1639551698442)(C:\Users\91053\AppData\Roaming\Typora\typora-user-images\image-20211202214051399.png)]

#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 . 鲁东信电的密码

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-d2ckOAbr-1639551698444)(C:\Users\91053\AppData\Roaming\Typora\typora-user-images\image-20211214164440635.png)]

#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 . 圆柱和圆球

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-RLXQbi6w-1639551698445)(C:\Users\91053\AppData\Roaming\Typora\typora-user-images\image-20211214165827752.png)]

#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 . 成绩的等级转换***

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-V49pF3NQ-1639551698446)(C:\Users\91053\AppData\Roaming\Typora\typora-user-images\image-20211214172712596.png)]

#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 . 四个整数的排序

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-N9oTRdWz-1639551698447)(C:\Users\91053\AppData\Roaming\Typora\typora-user-images\image-20211215101002832.png)]

#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 . 正整数的变换***

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Oer0UXCl-1639551698448)(C:\Users\91053\AppData\Roaming\Typora\typora-user-images\image-20211215101019657.png)]

#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 . 判断闰年***

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-feXmpBc7-1639551698449)(C:\Users\91053\AppData\Roaming\Typora\typora-user-images\image-20211215102428592.png)]

#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位数

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-E7laGD3C-1639551698450)(C:\Users\91053\AppData\Roaming\Typora\typora-user-images\image-20211215110308478.png)]

#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;
	
}

数字分割

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-EN6DkHaR-1639551698450)(C:\Users\91053\AppData\Roaming\Typora\typora-user-images\image-20211215111237546.png)]

C . 二分法解方程

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-QcnMqi7b-1639551698451)(C:\Users\91053\AppData\Roaming\Typora\typora-user-images\image-20211215112520936.png)]

#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

  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值