c语言刷题笔记


如图,输入一个数字,打印一个对应的三角形

代码1:

#include<stdio.h>
int main()
{
	int n=0,i=0,j=0,m=0;
	while(~scanf("%d",&n))
	{
	for(i=0;i<n;i++)//i负责最后一行打印多少个*号
		//比如当输入n为3时就i循环3次,假如不看下面代码,这三次每次打印一个*,就是三个*

	{
		for(m=0;m<=i;m++)//m负责每行的*变化。当i为1时打印一个*,当i为2时,打印两个*
			//最后一直打印到最后一行结束,最后一行由i来控制
		{
		printf("*");
		
		}
	
	for(j=0;j<n;j++)//这里的j只负责打印几行,因为它是一个内循环,i执行一次,j执行j次,所以当i为3时,j循环
		//j循环3此就是3行
	{
	
	
	}
	printf("\n");//换行,每执行一次,执行一次m,执行一次j之后就会换一次行。
	}
	}
return 0;

}

代码2:

#include<stdio.h>
int main()
{
int n=0,i=0,j=0;int m=0;
int count=0;
while(~scanf("%d",&n))
{
	for(i=0;i<n;i++)//几个
	{	printf("*");

	for(j=0;j<i;j++)//几行
	{	printf("*");
	}
printf("\n");
	}
}

return 0;
}

代码1实际上是由

这个演变过来的。 

思路:只需要仍然保持输入几就打印几行,但是改善前面几行的条件,也就是j不动,但是把i给改一点

演变过程:



输入一个n,打印n矩形。比如输入2,打印一个2行2列的矩形

 

#include<stdio.h>
int main()
{
int n=0,i=0,j=0;int m=0;
int count=0;
while(~scanf("%d",&n))
{
	for(i=0;i<n;i++)//几个
	{	printf("*");

	for(j=0;j<n;j++)//几行
	{	printf("*");
	}
printf("\n");
	}
}

return 0;
}


输入一个数,这个数是多少就打印多少个*号

#include<stdio.h>
int main()
{
	int n=0;
	//int count=0;
	int i=0;
	while(~scanf("%d",&n))
	{
		for(i=0;i<n;i++)
		{
	printf("*");
		}

	}
return 0;
}


输入两个数,一个年份一个月份。

输出对应月份的天数

如果输入的年份恰好是闰年,同时月份输入为2时就会输出29天。否则照常,同时1,3,5,7,9,月份31天,2,4,6,8,10,12月份30天

代码1(简洁版):

#include<stdio.h>
int main()
{
	int days[12]={31,28,31,30,31,30,31,30,31,30,31,30};
	int b=0;
	int a=0;
	
	while(scanf("%d %d",&a,&b)!=EOF)
	{
		int day=days[b-1];
	if((a%4==0 && a%100!=0)||(a%400==0))
	{
	if(b==2)
	{
day=day+1;
	}
	}
		printf("%d\n",day);
	}
return 0;
}

代码2(复杂版):

#include<stdio.h>
int main()
{
	int a=0,b=0,c=0;

	while(scanf("%d %d",&a,&b)!=EOF);//输入年份和月份
	{
	
	if((a%4==0 && a%100!=0)|| a%400==0)
	{
	if(b==2)
	{
	
	printf("29");
	}
	
	}
	
	else
	{	//2,4,,,,8,,1,12显示31天
	
if(b%2==0)
{
printf("30");

}
else 
	{
		printf("31");
}

	}
	}
return 0;
}


输入一个数,然后输入一个运算符,最后再输入一个运算符。运算符只能为+-*/,其他的显示"无效",然后按照相应的运算符把第一个数和第二个数进行运算,最后输出。当输入运算符为"/"时,除数如果为0就显示"除数不能为0"

比如输入: 1.0+2.0

输出:1.0+2.0=3.0

#include<stdio.h>
int main()
{
	float a,c=0,sum,jian,chu,cheng;
	char b;
	while(scanf("%f %c %f",&a,&b,&c))
	{
		if(b=='+')
		{
			sum=a+c;

	printf("%f%c%f=%f",a,b,c,sum);
		}
	 if(b=='*')
			{
				cheng=a*c;
		printf("%f%c%f=%f",a,b,c,cheng);
		}
		 if(b=='-')
			{
				jian=a-c;
		printf("%f%c%f=%f",a,b,c,jian);
		}
	 if(b=='/')
{
	if(c==0)
		{
			printf("除数不能为0");
	}	
	
				else 
			{		chu=a/c;
		printf("%f%c%f=%f",a,b,c,chu);

	}
}
	 if(b!='+'&& b!='-'&& b!='*'&& b!='/')
		 printf("无效");
	}
return 0;
}




#include "stdio.h"
void main() {
	int n;//输入几个数
	int t;// 全部没有重复数字 才会执行
	int i,j;//冒泡 i / j
	int arr[20]= {0};//初始化数组
	scanf("%d",&n);
	for(i=0; i<n; i++) {
		scanf("%d",&arr[i]);
	}
	i=0;
	for(i=0; i<n; i++) {
		for(j=i+1; j<n; j++) {

			if(arr[i]==arr[j]) {
				printf("%d ",arr[i]);
				t++;
			}

		}

	}
	if(t==0) {
		printf("not");//全部没有重复数字 才会执行
	}
}

2.

第二行第三行依次类推

3.

#include<stdio.h>
int main()
{
    
int c=0;
int count=0;

int i=0;
char buf[100]={0};
gets(buf);
while(buf[i]!=0)
{
    if(buf[i]=='A')
{
    c++;
    }
else if(buf[i]=='B')
{
    count++;
    }
    i++;
}
if(c>count)
{
    printf("A\n");
}

if(count>c)
{
    printf("B\n");
}
else if(c==count) 
{
printf("E\n");
}

    return 0;

}

4.

如果输入内容里包含AEIOUaeiou,元音字符就打印"vowel",如果没有就打印"consant"

#include<stdio.h>
#include<string.h>
int main ()
{
	int i=0;
	char vowel[]="AEIOUaeiou";
int ch=0;
	ch=getchar();
	
	
	if(strchr(vowel,ch))

	{
	printf("vowel");

	}
	else
		printf("Consonant");
	//getchar();
return 0;
}

如果多组输入,不用getchar,用scanf的话:


 

用strchr库函数在判断是否有元音字符:

 

5.输入一个数,如果会字符就打印is an alphabet,如果不是字符就打印is not an alphabet

 第二种方法

用ispalpha库函数

第三种方法,用Getchar

用getchar这里如果多行输入用

就会报错

 

不论输入数字还是字母都显示不是字母

但是如果用getchar单行输入就没问题

 

但是我们就是想要多行输入的效果

可以试试这个

#include<stdio.h>
int main() {
	char ch,t;
    int z;
    z=1;
	do{
		ch=getchar();
		
		
		if((ch>='a'&&ch<='z')||(ch>='A'&&ch<='Z')) {
			printf("is an alphabet\n");
		}else if(ch>=48 && ch<=57){//0-9的acsii码
			printf("is not an alphabet\n");
		}else if(t=27){//ESC的ASCII
			z=0;   //z为0退出
			break;//esc->27
		} 
t=getchar();//读取回车\n
	
	}while(z);//z为1时循环,为0时为假,退出循环
	return 0;
}

其实getchar用多行也可以

括号别丢了

 

6.输入三个数,判断是不是三角形,如果是三角形就判断是等腰三角形还是全等三角形,如果不是三角形,就输出不是三角形

#include<stdio.h>
int main()
{
	int a=0,b=0,c=0;
while(scanf("%d %d %d",&a,&b,&c)!=EOF){
if(  (a+b>c) ||(a+c>b) || (b+c>a) ){
	printf("是三角形");
if(a==b&&a==c){
printf("是全等三角形");}

else if(a==b&&a!=c || a==c&&a!=b || b==c&&b!=a){
printf("等腰");}

else{
printf("其他三角形");}

}
else{
	printf("不是三角形");}
}
return 0;
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

孙鹏宇.

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值