考研复习代码练习001指针前面的程序

Note:第三章开始课后题暂时未做
001在屏幕输出信息:This is program!

#include<stdio.h>

int main(){
	
	printf("This is program!\n");
	
	return 0;
}

002求两个整数之和

#include<stdio.h>

int main(){
	
	int a,b,sum;
	a = 123;
	b = 23;
	sum = a + b;
	printf("sum is %d",sum);
	
	return 0;
}

003求两个整数之间的较大者

#include<stdio.h>

int main()
{
	
	int a,b;
	int max(int x,int y);
	scanf("%d,%d",&a,&b);
	printf("max is %d",max(a,b));
	
	return 0;
}

int max(int x,int y)
{
	
	int z;
	if(x>y)
	{
		z = x;
	}
	else
	{
		z = y;
	}
	
	return z;
}

004输出平行四边形

#include<stdio.h>

int main()
{
	
	printf("******\n");
	printf("  ******\n");
	printf("    ******\n");
	printf("      ******\n");
	
	return 0;
}

005求123*4


006判断2000-2500年的每一年是否为闰年

#include<stdio.h>

int main()
{
	
	int year;
	scanf("%d",&year);
	if(year>=2000 && year<=2500)
	{
		if((year %4 ==0 && year % 100 !=0) || year % 400 ==0)
		{
			printf("%d年是闰年!",year);
		}
		else
		{
			printf("%d年不是闰年!",year);
		}
	}
	else{
		printf("你输入的年份超出范围!");
	}
	
	return 0;
}

007求1 - 1/2 + 1/3 ······ - 1/100

#include<stdio.h>

int main()
{
	
	float i,sum =0;
	for(i = 1; i<=100; i++)
	{
	//注意int需要强制转换一下
		if((int)i % 2 == 0)
		{
			sum = sum - 1/i;
		}
		else
		{
			sum = sum + 1/i;
		}

	} 
	printf("%f",sum);
	
	return 0;
}

008给出一个大于或等于3的正整数,判断它是不是一个素数。

#include<stdio.h>
#include<math.h>

int main()
{
	int n, i,flag=0;
	printf("请输入一个整数:");
	scanf("%d",&n);
	
	for(i = 2; i <= sqrt(n); i++)
	{
		if(n%i == 0 )
		{
			flag++;
			break;
		}
	}
	if(flag == 1)
	{
		printf("不是素数");
	}
	else{
		printf("是素数");
	}
	return 0;
} 

009.A和B的值互换
思路:还可以通过中间变量的方式

#include<stdio.h>

int main()
{
	int a,b;
	scanf("%d %d",&a,&b);
	a=a+b;
	b=a-b;
	a=a-b;
	printf("%d %d",a,b);
	
	return 0;
} 

010依次将10个数输入,输出最大的数

#include<stdio.h>

int main()
{
	int count=0,n,max;
	while(count < 10)
	{
		
		scanf("%d",&n);
		if(count == 0)
		{
			max = n;
		}
		max = n>max ? n:max;
		count++;
	}
	printf("最大值为:%d",max);
	
	return 0;
} 

011.输入三个数,并按大小顺序排序

#include<stdio.h>

int main()
{
	int a,b,c,temp;
	printf("请输入三个数:");
	scanf("%d %d %d",&a,&b,&c);
	if(a<b)
	{
		temp = a;
		a = b;
		b = temp;
	}
	if(a<c)
	{
		temp = a;
		a = c;
		c = temp;
	}
	if(b<c)
	{
		temp = b;
		b = c;
		c = temp;
	}
	printf("由大到小为:%d,%d,%d",a,b,c);
	
	return 0;
} 

012.求1-100的和

#include<stdio.h>

int main()
{
	int i, sum = 0;
	for(i = 1; i<=100; i++)
	{
		sum += i;
		
	}
	printf("%d",sum);
	
	return 0;
} 

013.判断一个数n能否同时被3和5整除

#include<stdio.h>

int main()
{
	int n;
	scanf("%d",&n);
	if(n % 3 ==0 && n % 5 == 0)
	{
		printf("%d能同时被3和5整除:",n);
	}
	else
	{
		printf("%d不能同时被3和5整除:",n);
	}
	
	return 0;
} 

014.将100-200之间的素数输出

#include<stdio.h>
#include<math.h>

int main()
{
	int i,j;
	int isPrime(int x);
	printf("素数是:\n");
	for(i = 100; i <= 200; i++)
	{
		j = isPrime(i);
		if(j == 0)
		{
			printf("%d ",i);
		}
	}
	
	return 0;
} 

int isPrime(int x)
{
	int i,flag = 0;
	for(i = 2; i < sqrt(x); i++)
	{
		if(x % i == 0)
		{
			flag++;
			break;
		}
	}
	return flag;
}

015.求m和n的最大公约数

#include<stdio.h>
#include<math.h>

int main()
{
	int a,b,i,temp;
	scanf("%d %d",&a,&b);
	
	if(a>b)
	{
		temp = b;
		b = a;
		a = temp;
	}
	
	for(i = a; i >= 1; i--)
	{
		if(b % i == 0 && a % i == 0)
		{
			printf("最大公约数为:%d",i);
			break;
		}
	}
	
	return 0;
} 

016.求方程 ax^2 + bx + c = 0 的根

#include<stdio.h>
#include<math.h>

int main()
{
	float a,b,c,p1,p2;
	printf("请输入方程ax^2 + bx + c中的a b c 的值:");
	scanf("%f %f %f",&a,&b,&c);
//	printf("%f %f %f\n",a,b,c);
//	printf("%d\n",(int)(b*b - 4*a*c));
	
	if((int)(b*b - 4*a*c) > 0)
	{
		p1 =  -b / (2*a) + sqrt(b*b - 4*a*c) / (2*a);
		p2 =  -b / (2*a) - sqrt(b*b - 4*a*c) / (2*a);
		printf("方程组的解为:p1 = %.1f, p2 = %.1f",p1,p2);
	}
	else if((int)(b*b - 4*a*c) == 0)
	{
		p1 = p2 = -b / (2*a);
		printf("方程组的解为:p1 = p2 = %.0f",p1);
	}
	else
	{
		printf("方程组无解");
	}
	
	return 0;
} 

017.华氏温度转摄氏温度。公式c = 5(f-32)/9 ,c为摄氏温度,f为华氏温度。

#include<stdio.h>
#include<math.h>

int main()
{
	float f,c;
	printf("请输入华氏温度:\n");
	scanf("%f",&f);
	c = 5*(f-32)/9;
	printf("摄氏温度为:%.2f\n",c);
	
	return 0;
} 

Note: 当scanf中加 \n 后产生的问题:
在这里插入图片描述
018.输入一个大写字母,输出小写

#include<stdio.h>
#include<math.h>

int main()
{
	char c1,c2;
	printf("请输入大写字母:");
	scanf("%c",&c1);
	
	c2 = c1 + 32;
	printf("%c",c2);
	
	return 0;
} 

019.已知三边长,求三边的面积

#include<stdio.h>
#include<math.h>

int main()
{
	int a,b,c;
	float area,s;
	scanf("%d %d %d",&a,&b,&c);
	
	s = (a+b+c)/2;
	area = sqrt(s*(s-a)*(s-b)*(s-c));
	printf("面积:%.2f",area);
	
	return 0;
} 

020.练习使用putchar()和getchar()

#include<stdio.h>
#include<math.h>

int main()
{
	char a;
	a = getchar();
	putchar(a);
	
	return 0;
} 

021.输入一个字符,判断是不是大写,若是转化成小写,否则,原样输出。

#include<stdio.h>
#include<math.h>

int main()
{
	char a;
	a = getchar();
	a = (a>='A' && a<='Z')? (a+32):a;
	printf("%c",a);
	
	return 0;
} 

022.按照考试等级输出百分制分数A:85以上;B:70~84
note:注意break作用

#include<stdio.h>
#include<math.h>

int main()
{
	char level;
	scanf("%c",&level);
	switch(level)
	{
		case 'A': printf("85~100");break;
		case 'B': printf("70~84");break;
		default:printf("error!");
	}
	
	return 0;
} 

023.输入a或A执行A操作,输入b或B执行B操作

#include<stdio.h>
#include<math.h>

int main()
{
	void action1(int x, int y),action2(int x, int y);
	
	int a = 23 ,b = 3;
	char ch = getchar();
	
	switch(ch)
	{
		case 'a':
		case 'A': action1(a,b);break;
		case 'b':
		case 'B': action2(a,b);break;
		//转义字符 \a 使系统发出叮的一声 
		default: putchar('\a');
		
	}
	
	return 0;
} 

void action1(int x, int y)
{
	printf("sum = %d",x+y);
}

void action2(int x, int y)
{
	printf("multiply = %d",x*y);
}

024.while循环实现1-100的和

#include<stdio.h>
#include<math.h>

int main()
{
	int sum = 0,i =1;
	while(i<=100)
	{
		sum += i;
		i++;
	} 
	printf("sum = %d",sum);
	
	return 0;
} 

025.do…while循环实现1-100的和
note:do…while循环后面要有分号

#include<stdio.h>
#include<math.h>

int main()
{
	int i=1,sum =0;
	do
	{
		sum += i;
		i++;
	}
	while(i<=100);
	printf("sum = %d",sum);
	
	return 0;
} 

026.输出4*5的矩阵(第n行是第一行的n倍

#include<stdio.h>
#include<math.h>

int main()
{
	int i,j;
	for(j=1;j<=4;j++)
	{
		for(i=1;i<=5;i++)
		{
			printf("%d\t",i*j);
		}
		printf("\n");
	}
	
	
	return 0;
} 

027.对数组元素赋值0-9并逆序输出

#include<stdio.h>
#include<math.h>

int main()
{
	int a[10],i;
	for(i=0;i<10;i++)
	{
		a[i] = i;
	}
	for(i=9;i>=0;i--)
	{
		printf("%d\t",a[i]);
	}
	
	
	return 0;
} 

028.用公式Π/4 = 1-1/3+1/5-1/7…求Π的近似值,直到发现某一项的绝对值小于10的-6次为止。

#include<stdio.h>
#include<math.h>

int main()
{
	
	double sign=1,i=1,terms=1,sum=0;
	while(fabs(terms) > 1e-6)
	{
		terms = sign/i;
		sum = sum+ terms;
		i +=2;
		sign = -sign;
	}	
	printf("Π的值为:%.8f\n",sum*4);
	
	return 0;
} 

029.求fibonacci数列 (兔子繁殖规律) 的前40个数:第1,2两个数为1,1 从第三个数开始,该数是前面两个数的和。即:1,1,2,3,5,8,13…

#include<stdio.h>
#include<math.h>

int main()
{
	int f1 = 1, f2 = 1, f3,i;
	printf("%d\n",f1);
	printf("%d\n",f2);
	
	for(i = 1;i<=40;i++)
	{
		f3 = f1 + f2;
		f1 = f2;
		f2 = f3;
		printf("%d\n",f3);
	}
	
	
	return 0;
} 

030.数组求fibonacci数列前20项并输出

#include<stdio.h>
#include<math.h>

int main()
{
	int f[20] = {1,1},i=0,count;
	
	for(i=2;i<20;i++)
	{
		f[i] = f[i-1] + f[i-2];
	}
	
	for(i=0,count=0;i<20;i++)
	{
		printf("%8d",f[i]);
		count++;
		if(count%5 == 0)
		{
			printf("\n");
		}
	}
	
	
	return 0;
} 

031.有10个地区的面积,要求他们按由小到大的顺序排列。(冒泡法)

#include<stdio.h>
#include<math.h>

int main()
{
	int a[10],i,j,temp;
	
	printf("请输入10个数:\n");
	for(i = 0;i<10;i++)
	{
		scanf("%d",&a[i]);
	}
	printf("\n");
	
	for(i=1;i<=9;i++)
	{
		for(j=0;j<10-i;j++)
		{
			if(a[j]>a[j+1])
			{
				temp = a[j];
				a[j] = a[j+1];
				a[j+1] = temp;
			}
		}
	}
	for(i=0;i<10;i++)
	{
		printf("%8d",a[i]);
	}	
	
	return 0;
} 

032.将23的矩阵值行列互换为32(二维数组的应用)

#include<stdio.h>
#include<math.h>

int main()
{
	int a[2][3],b[3][2];
	int i,j;
	
	printf("为矩阵从左向右输入值:");
	
	for(i=0;i<2;i++)
	{
		for(j=0;j<3;j++)
		{
			scanf("%d",&a[i][j]);
		}
	} 
	
	for(i=0;i<2;i++)
	{
		for(j=0;j<3;j++)
		{
			b[j][i] = a[i][j];
		}
	}
	
	for(i=0;i<3;i++){
		for(j=0;j<2;j++)
		{
			printf("%6d",b[i][j]);
		}
		printf("\n");
	}
	
	return 0;
} 

033.有一个3*4的矩阵,要求输出最大的值及所在的行号列号

#include<stdio.h>
#include<math.h>

int main()
{
	int a[3][4];
	int i,j,max,row=0,column=0;
	
	max=a[0][0];
	
	printf("为矩阵从左向右输入值:\n");
	
//	输入矩阵值 
	for(i=0;i<3;i++)
	{
		for(j=0;j<4;j++)
		{
			scanf("%d",&a[i][j]);
		}
	} 
	
//	找最大值,及所在行和列 
//	未解决最大值有多个的情况 
	for(i=0;i<3;i++)
	{
		for(j=0;j<4;j++)
		{
			if(a[i][j] > max){
				max=a[i][j];
				row = i;
				column = j;
			}
		}
	} 
	
	
	
//	输出矩阵值 
	for(i=0;i<3;i++)
	{
		for(j=0;j<4;j++)
		{
			printf("%6d",a[i][j]);
		}
		printf("\n");
	} 
	
//	输出最大值以及行列
	printf("最大值:%d,行号:%d,列号:%d",max,row,column); 


	
	return 0;
} 

034.输出已知的字符串

#include<stdio.h>
#include<math.h>

int main()
{
	char s[] = {'c','h','u','a','n'};
	int i;
	
	for(i=0;i<5;i++)
	{
		printf("%c",s[i]);
	}

	
	return 0;
} 

035.输出一个菱形图(使用字符型数组)

#include<stdio.h>
#include<math.h>

int main()
{
	char s[][5] = {{' ',' ','*',' ',' '},{' ','*',' ','*',' '},{'*',' ',' ',' ','*'},{' ','*',' ','*',' '},{' ',' ','*',' ',' '}};
	int i,j;
	
	for(i=0;i<5;i++)
	{
		for(j=0;j<5;j++)
		{
			printf("%c",s[i][j]);
		}
		printf("\n");
	}

	
	return 0;
} 

🔺0.36输入一行字符,统计其中有多少个单词,单词之间用空格分隔开。⭐⭐⭐要明白 ‘\0’ 和 空格 是不同的⭐⭐⭐

#include<stdio.h>
#include<math.h>

int main()
{
	char string[81];
	int i,num=0,word=0;
	char c;
	gets(string);
	for(i=0; (c=string[i]) != '\0'; i++)
	{
		if(c == ' ')
		{
			word=0; 
		}
		else if(word == 0)
		{
			word = 1;
			num++;
		}
	}
	
	printf("单词数目:%d",num);
	puts(string);
	
	return 0;
} 

  1. 有三个字符串,找出其中最大者⭐熟悉常用字符串处理函数⭐
#include<stdio.h>
#include<math.h>
#include<string.h>

int main()
{
	char str[3][20];
	char string[20];
	int i ;
	
	for(i=0;i<3;i++)
	{
		gets(str[i]);
	}

	if(strcmp(str[0],str[1])>0)
	{
		strcpy(string,str[0]);
	}
	else
	{
		strcpy(string,str[1]);
	}
	
	if(strcmp(str[2],string)>0)
	{
		strcpy(string,str[2]);
	}
	
	printf("the largest string:%s",string);
	return 0;
} 

038.通过函数调用实现指定风格和内容输出

#include<stdio.h>
#include<math.h>
#include<string.h>

int main()
{
	
	void print_star();
	void print_content();
	
	print_star();
	print_content();
	print_star();
	
	return 0;
} 

void print_star()
{
	printf("**********\n");
}

void print_content()
{
	printf("hello chuanchuan!\n");
}

039.输入两个整数,要求输出其中的较大者。要求用函数来找到大数。

#include<stdio.h>
#include<math.h>
#include<string.h>

int main()
{
	
	int a,b,c;
	int max(int x, int y);
	scanf("%d,%d",&a,&b);
	c = max(a,b);
	
	printf("max = %d",c);
	
	return 0;
} 

int max(int x,int y)
{
	int z;
	z= x>y? x:y;
	return z;
}

040.输入4个整数,找出最大的数。用函数的嵌套来处理。

#include<stdio.h>
#include<math.h>
#include<string.h>

int main()
{
	
	int a,b,c,d,m;
	int max(int x, int y);
	scanf("%d,%d,%d,%d",&a,&b,&c,&d);
	m = max(a,b);
	m = max(m,c);
	m = max(m,d);
	
	printf("max = %d",m);
	
	return 0;
} 

int max(int x,int y)
{
	int z;
	z= x>y? x:y;
	return z;
}

041.递归求年龄的问题

#include<stdio.h>
#include<math.h>
#include<string.h>

int main()
{
	int age(int n);
	
	printf("%d",age(5));
	
	
	return 0;
} 

int age(int n)
{
	int c;
	
	if(n==1)
	{
		c=10;
	}
	else
	{
		c = age(n-1) + 2;
	}
	
	return c;
}

042.求n!
note:这里的n不能太大,否则会超出int的范围

#include<stdio.h>
#include<math.h>
#include<string.h>

int main()
{
	int fac(int n);
	
	printf("%d",fac(4));
	
	return 0;
} 

int fac(int n)
{
	int c;
	if(n < 0)
	{
		printf("error!");
	}
	else if(n==0 || n==1)
	{
		c = 1;
	}
	else
	{
		c = fac(n-1)*n;
	}
	return c;
}

043.注意笔记

#include<stdio.h>
#include<math.h>
#include<string.h>

int main()
{
	int a=5;
	printf("%d\n",a);//输出正常
	printf("%f\n",a);//输出错误
	printf("%f\n",(float)a);//输出正常 
	
	printf("=================\n");
	float b= 5;
	printf("%f\n",b); //输出正常 
	printf("%d\n",b); //输出错误
	printf("%lf\n",b); //输出正常 
	
	//建议:各自用各自的输出格式声明符,不会出错! 
	
	
	return 0;
} 

044.汉诺塔(递归调用)⭐不太熟练⭐
note:scanf中切记不能加入其他字符和转义字符(同时也没必要)

#include<stdio.h>
#include<math.h>
#include<string.h>

int main()
{
	void hanoi(int n, char one, char two, char three);
	int m;
	scanf("%d",&m);
	hanoi(m,'A','B','C');
	
	return 0;
} 
void hanoi(int n, char one, char two, char three)
{
	void move(char x, char y);
	if(n==1)
	{
		move(one,three);
	}
	else
	{
		hanoi(n-1,one,three,two);
		move(one,three);
		hanoi(n-1,two,one,three);
	}
} 
void move(char x, char y)
{
	printf("%c -> %c\n",x,y);
}

045.输入10个数,要求输出其中最大值的元素和该数是第几个数。

#include<stdio.h>
#include<math.h>
#include<string.h>

int main()
{
	int a[10];
	int i,j=0,max;
	
	int f_max(int x,int y);
	for(i=0;i<10;i++)
	{
		printf("请输入第%d个数:",i+1);
		scanf("%d",&a[i]);
	} 
	max=a[0];
	for(i=1;i<10;i++)
	{
		if(a[i]>max)
		{
			j=i;
		}
		max=f_max(a[i],max);
		
	}
	printf("最大的元素是:%d\n",max);
	printf("最大的元素是第%d个",j);
	
	return 0;
} 

int f_max(int x,int y)
{
	return x>y? x:y;
}

046.有一个一维数组score,内存放10个学生成绩,求平均成绩。

#include<stdio.h>
#include<math.h>
#include<string.h>

int main()
{
	int i;
	float score[10];
	float average(float array[10]);
	
	for(i=0;i<10;i++)
	{
		printf("请输入第%d个数:",i+1);
		scanf("%f",&score[i]);
	}
	printf("平均值是:%f",average(score));
	
	return 0;
} 
//形参中数组可不指定大小,指定的大小不起作用
float average(float array[10])
{
	int i;
	float aver,sum;
	
	for(i=0;i<10;i++)
	{
		sum += array[i];
	}
	aver = sum/10;
	
	return aver;
}


047.有两个班级,分别有5名和10名学生,调用average分别求出平均成绩。

#include<stdio.h>
#include<math.h>
#include<string.h>

int main()
{
	float average(float array[],int n);
	
	float score1[] = {1,2,3,4,5};
	float score2[] = {1,2,3,4,5,6,7,8,9,10};
	
	printf("average score of class one:%.3f\n",average(score1,5));
	printf("average score of class two:%.3f\n",average(score2,10));
	
	return 0;
} 

float average(float array[],int n)
{
	int i;
	float sum = 0,aver;
	
	for(i=0;i<n;i++)
	{
		sum += array[i];
	}
	aver = sum/n;
	
	return aver;
}

048.用选择法对数组中10个整数进行由小到大的排序。

#include<stdio.h>
#include<math.h>
#include<string.h>

int main()
{
	void sort(int array[],int n);
	
	int a[] = {3,5,2,6,8,2,1,10,1,4,3,77};
	int i;
	
	sort(a,12);
	
	printf("排序以后的数组元素为:\n");
	for(i=0;i<12;i++)
	{
		printf("%5.d",a[i]); 
	}

	
	return 0;
} 

void sort(int array[],int n)
{
	int i,j,temp;
	
	for(i=0;i<n-1;i++)
	{
		for(j=i+1;j<n;j++)
		{
			if(array[i]>array[j])
			{
				temp = array[i];
				array[i] = array[j];
				array[j] = temp;
			}
		}
	}
}

049.3*4的矩阵,找出其中的最大值。

#include<stdio.h>
#include<math.h>
#include<string.h>

int main()
{
	int max_value(int array[][4]);
	int a[3][4] = {{1,2,3,4},{5,6,7,8},{9,10,11,12}};
	
	printf("number of max:%d\n",max_value(a));
	
	return 0;
} 

int max_value(int array[][4])
{
	int i,j,max=array[0][0];
	
	for(i=0;i<3;i++)
	{
		for(j=0;j<4;j++)
		{
			max= max > array[i][j]? max:array[i][j];
		}
	}
	
	return max;
}

050.一维数组,内存放10个学生成绩,写一个函数,当主函数调用该函数时,能求出最高分、最低分、平均值。

#include<stdio.h>

float Max = 0, Min = 0; 

int main()
{
	float average(float array[ ],int n); 
	int i;
	float score[10],ave;
	printf("please enter 10 scores of student:\n");
	for(i=0;i<10;i++)
	{
		scanf("%f",&score[i]);
	}
	ave = average(score,10);
	printf("max=%.3f,min=%.3f,average=%.3f\n",Max,Min,ave);
	
	return 0;
} 

float average(float array[ ],int n)
{
	int i;
	float aver, sum =array[0];
	Max = Min = array[0];
	for(i = 1;i<n;i++)
	{
		if(array[i] > Max)
		{
			Max = array[i];
		}
		else if(array[i] < Min)
		{
			Min = array[i];
		}
		sum += array[i];
	}
	aver = sum/n;
	return aver;
}

051.输出1!~5!的阶乘值。

#include<stdio.h>

float Max = 0, Min = 0; 

int main()
{
	int fac(int n);
	int i;
	for(i=1;i<=5;i++)
	{
		printf("%d!=%d\n",i,fac(i));
	}
	
	return 0;
} 

int fac(int n)
{
	static int f = 1;
	f *=n;
	return f;
}
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值