C语言 前五章 难点代码总概 (上)

C语言 前五章 难点代码总概 (上)

1.用条件运算计算下面分段函数的值 y=x+25(x>0)or y=x-25(x<=0)

难点在于不经常使用的条件运算的格式:(判断语句)?(真):(假);

#include<stdio.h>
int main()
{
    int x,y;
    printf("input x:");
    scanf("%d",&x);
    y=(x>0)?(x+25):(x-25);
    printf("%d\n",y);
    return 0;
}

2.输入A或B或C时显示“GOOD”,输入D或E时显示"BAD",其他情况显示"ERROR"。

难点在于相比for循环语句,switch语句的格式较为生疏,default的拼写常出现错误,字母作为char类型,在此处需要加''。

#include<stdio.h>
int main()
{
    char score;
    printf("input score:");
    scanf("%c",&score);
    switch(score)
    {
        case 'A':
        case 'B':
        case 'C':
            printf("GOOD\n");
            break;
        case 'D':
        case 'E':
            printf("BAD\n");
            break;
        default:
            printf("ERROR\n");
    }   
    return 0;
}

3.利用do while命令,输入N个学生的某课程成绩,计算平均成绩

do while的格式,理清i计数

#include<stdio.h>
#define N 5
int main()
{
	int x,i=1,sum=0;
	do {
		printf("Data:");
		scanf("%d",&x);
		sum=sum+x;
	    i++;
	}while(i<=N);
	printf("%d\n",sum/N);
	return 0;
}

4.判断素数。从键盘上输入一个整数,判断其是否为素数。

素数又称质数。所谓素数是指除了 1 和它本身以外,不能被任何整数整除的数

思路1):因此判断一个整数m是否是素数,只需把 m 被 2 ~ m-1 之间的每一个整数去除,如果都不能被整除,那么 m 就是一个素数。

思路2):另外判断方法还可以简化。m 不必被 2 ~ m-1 之间的每一个整数去除,只需被 2 ~  之间的每一个整数去除就可以了。如果 m 不能被 2 ~  间任一整数整除,m 必定是素数。

#include<stdio.h>
#include<math.h>
int main()
{
    int k,i,sk;
	printf("data:");
	scanf("%d",&k);
	sk=(int)sqrt(k);
	for(i=2;i<=sk;i++)
		if(k%i==0)
		{
			break;
		}
	if(i>sk)
		printf("yes\n");
	else
		printf("no\n");
    return 0;
}

5.搬砖问题。36块砖,36人搬,男搬4,女搬3,两孩搬1砖。要求编写程序,把可能的搬运方案都找出来。

注意:穷举算法。z=z+2。

#include<stdio.h>
int main()
{
    int x,y,z;
	for(x=0;x<=8;x++)
		for(y=0;y<=12;y++)
			for(z=0;z<=36;z=z+2)
				if((4*x+3*y+z/2==36)&&(x+y+z==36))
				{
					printf("men:%d\n",x);
					printf("women:%d\n",y);
					printf("kid:%d\n",z);
				}

    return 0;
}

6.从键盘输入一个字符串,统计其中数字字符的个数。

此题设计的巧妙之处在于:利用ch!=\n判断一个字符串的始末,利用getchar()一一获取字符。

#include<stdio.h>
int main()
{
    char ch;
	int count=0;
	printf("Input a char:");
	ch=getchar();
	while(ch!='\n')
	{
		if(ch>='0'&&ch<='9')
			count++;
		ch=getchar();
	}
	printf("%d",count);
    return 0;
}

法2.不是很巧妙但是很诚恳的方法

#include<stdio.h>
#define n 50
int main()
{
	char a[n];
	int i,j;
	printf("输入一个字符串\n");
	gets(a);
	for(i=0,j=0;i<n;i++)
	{
		if(a[i]>='0'&&a[i]<='9')
			j++;
	}
	printf("%d",j);
	return 0;
}

7.用gets()函数输入一个字符串,将其存储到str数组中,然后使用printf()函数输出str中的字符串。

注意:gets()函数的使用与getchar()并不相同。

#include<stdio.h>
int main()
{
    char str[20];
	printf("input");
	gets(str);
	puts(str);
    return 0;
}

8.将两个字符串连接为一个新字符串,并将该字符串输出。

strcat(x1,x2); 是将两个字符串x1,x2连接为一个新的字符串;s1是字符数组名或字符数组的开始地址,s2既可以是字符数组名,也可以是字符串;若想使用该函数,须引用string库。

#include<stdio.h>
#include<string.h>
int main()
{
    char s1[20]="icantforgetu",s2[20]="xiaoshi";
	strcat(s1,s2);
	puts(s1);
    return 0;
}

9.字符串复制。

strcpy(x1,x2);是将x2复制到x1;s1是字符数组名或字符数组的开始地址,但不能为字符串,s2既可以是字符数组名,也可以是字符串;若想使用该函数,须引用string库。

#include<stdio.h>
#include<string.h>
int main()
{
    char s1[20]="mylover",s2[20]="xiaoshi";
	strcpy(s1,s2);
	puts(s1);
    return 0;
}

10.设计一个密码验证程序。

strcmp(s1,s2);比较字符串s1与s2的大小,若s1大于s2,返回一个正数,若s1小于s2,返回一个负数,若s1,s2相等,返回0;s1,s2可以是字符数组名也可以是字符串;若想使用该函数,须引用string库。

#include<stdio.h>
#include<string.h>
#define N 3
int main()
{
    char str[10];
	int i;
	for(i=0;i<N;i++)
	{
		printf("INPUT");
		gets(str);
		if(strcmp(str,"china")==0)
			break;
	}
	if(i>=N)
		printf("sorry\n");
	if(i<N)
		printf("welcome\n");
    return 0;
}

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值