专业课真题复习(2021)

1.题目描述:
1.编写程序,其中的子函数功能为求两个自然数的最大公约数。在主函数中读入两个自然数,并输出最大公约数的结果。

#include<stdio.h>
int maxyue(int a,int b)
{
    
    
	int t;
	int y=a%b;
	if(a<b)
	{
    
    
		t=a;
		a=b;
		b=t;
	}
	while(y!=0)
	{
    
    
		a=b;
		b=y;
		y=a%b;
	}
	return b;
}
int main(void)
{
    
    
	int x,y;
	printf("请输入两个数:\n");
	scanf("%d%d",&x,&y);
	printf("这两个数的最大公约数为%d",maxyue(x,y));
	return 0;
}

2.题目描述:
编写程序统计输入的一个字符串中大写字母的个数。例如,输入字符串的内容为“AbaCrtH”,则应输入结果为3。

#include<stdio.h>
#include<string.h>
#include<stdlib.h>
int main(void)
{
    
    
	char str[100];
	int number=0;
	int i;
	printf("请输入一个字符串:\n");
	gets(str);
	for(i=0;i<strlen(str);i++)
	{
    
    
		if(str[i]>='A'&&str[i]<='Z')
		{
    
    
			number++;
		}
	}
	printf("该字符串大写字母的个数为%d",number);
	return 0;
}

3.题目描述:
用冒泡法对读入的10个整数进行排序并输出结果。

#include<stdio.h>
#include<stdlib.h>
#include<string.h>
int main(void)
{
    
    
	int arr[10];
	int i,j;
	int temp;
	printf("请输入10个整数:\n");
	for(i=0;i<10;i++)
	{
    
    
		scanf("%d",&arr[i]);
		
	}
	for(i=0;i<9;i++)
	{
    
    
		for(j=0;j<9-i;j++)
		{
    
    
			if(arr[j]>arr[j+1])
			{
    
    
				temp=arr[j];
				arr[j]=arr[j+1];
				arr[j+1]=temp;
			}
		}
	}
	for(i=0;i<10;i++)
	{
    
    
		printf("%d\n",arr[i]);
	}
	return 0;
}

4.题目描述:
编写程序,找出1-299之间能被3整除,且至少有一位数字为5的所有整数,并将结果写入result.txt文件中。

#include<stdlib.h>
#include<stdio.h>
#include<string.h>
int havefive(int n)
{
    
    
	int a=n/100;
	int b=(n-a*100)/10;
	int c=n%10;
	if(a==5||b==5||c==5)
	{
    
    
		return 1;
	}
	return 0;
}
int main(void)
{
    
    
	FILE *fr;
	int i;
	if((fr=fopen("result.txt","w"))==NULL)
	{
    
    
		printf("can not open this file.");
		exit(0);
	}
	for(i=1;i<300;i++)
	{
    
    
		if(i%3==0&&havefive(i))
		{
    
    
			char a=i;
			
			printf("%d\n",i);
		
			fprintf(fr,"%d\n",i);
		}
	}
	fclose(fr);
	return 0;
}

注意:要保证不乱码,要用fprintf()函数。

猜你喜欢

转载自blog.csdn.net/qq_44867340/article/details/121890216
今日推荐