C语言程序设计基础

/*
从键盘输入一个一百分制成绩(无小数),
将输入的数据转换成等级“ABCDEFGHIJX”。
90 ~ 100→A,80 ~ 89→B,70 ~ 79→C,
60 ~ 69→D,50 ~ 59→E,40 ~ 49→F,
30 ~ 39→G,20 ~ 29→H,10 ~ 19→I,0 ~ 9→J,
其它输入超正常范围分数的则为X。
*/
#include <stdio.h>

int main(void)
{
	int score,grade;
	printf("please input the score(0~100):");
	scanf("%d",&score);
	grade = score/10;
	if(score>=0 && score<=100){
		switch(grade){
			case 0:
				printf("score=%d,grade=J\n",score);
				break;
			case 1:
				printf("score=%d,grade=I\n",score);
				break;
			case 2:
				printf("score=%d,grade=H\n",score);
				break;
			case 3:
				printf("score=%d,grade=G\n",score);
				break;
			case 4:
				printf("score=%d,grade=F\n",score);
				break;
			case 5:
				printf("score=%d,grade=E\n",score);
				break;
			case 6:
				printf("score=%d,grade=D\n",score);
				break;
			case 7:
				printf("score=%d,grade=C\n",score);
				break;
			case 8:
				printf("score=%d,grade=B\n",score);
				break;
			case 10:
			case 9:
				printf("score=%d,grade=A\n",score);
				break;
			default:
				printf("X\n");
		}
	}else
		printf("X\n");
	return 0;
}

总结:

        ①通过switch多分枝语句实现成绩评等级。

/*
从键盘读入一个等级成绩,输出对应的百分制成绩。
A→95、B→85、C→75、D→65、
E→55、F→45、G→35、H→25、
I→15、J→0。
若输入的等级成绩非A ~ J,则输出“Error”。
*/
#include <stdio.h>

int main(void)
{
	char grade,score;
	printf("please input the grade:");
	scanf("%c",&grade);
	if(grade<'A' || grade>'J'){
		printf("Error\n");
	}else{
		switch(grade){
			case 'A':
				score=95;
				break;
			case 'B':
				score=85;
				break;
			case 'C':
				score=75;
				break;
			case 'D':
				score=65;
				break;
			case 'E':
				score=55;
				break;
			case 'F':
				score=45;
				break;
			case 'G':
				score=35;
				break;
			case 'H':
				score=25;
				break;
			case 'I':
				score=15;
				break;
			case 'J':
				score=0;
				break;
			default:;
		}
		printf("grade=%c,score=%d\n",grade,score);
	
	}
	
	return 0;
}

总结:

        ①利用switch多分枝语句实现输入等级,输出对应的分数。

/*
字符串“abcd”每个字符都向右移位,
最右的则移动到第一个字符的位置,就变为“dabc”,
这称为对串进行位移为1的轮换。
同理,“abcd”变为“cdab”则称为位移为2的轮换。
要求从键盘读入一个字符串str
(约定字符串中字符数 ≤ 80字节,字符串中可以有空格)
和需要位移的值n(n > str的长度时,循环位移),
输出对该字符串进行位移为n的轮换结果。
*/ 
#include <stdio.h>
#include <string.h>
int main(void){
	char str[81];
	int num,len,i;
	printf("Please input the string:");
	gets(str);
	len = strlen(str);
	printf("Please input n:");
	scanf("%d",&num);
	
	printf("\nThe result is:");
	if (num <= len){
		for(i = len-num;i < len;i++){
			printf("%c",str[i]);
		}
		for(i = 0;i < len-num;i++){
			printf("%c",str[i]);
		}
	}
	else{
		for(i = len-num%len;i < len;i++){
			printf("%c",str[i]);
		}
		for(i = 0;i < len-num%len;i++){
			printf("%c",str[i]);
		}	
	}
	putchar('\n');
	
	return 0;
}

总结:

        ①这里使用gets()函数获取字符,用putchar()函数输出字符。

        ②句内逻辑看一遍代码还不算难。

/*
从键盘输入3个可带空格的字符串
(约定:字符数 ≤ 127字节),
输出长度最大的字符串的长度。
*/ 
#include <stdio.h>
#include <string.h>
int main(void){
	char str1[128],str2[128],str3[128];
	printf("Please input the first string:\t");
	gets(str1);
	printf("Please input the second string:\t");
	gets(str2);
	printf("Please input the third string:\t");
	gets(str3);
	if(strlen(str1) > strlen(str2)){
		if(strlen(str1) > strlen(str3)){
			printf("最长字符串长度为:%d\n",strlen(str1));
		}
		else{
			printf("最长字符串长度为:%d\n",strlen(str3));
		}
	}
	else{
		if(strlen(str2) > strlen(str3)){
			printf("最长字符串长度为:%d\n",strlen(str2));	
		}
		else{
			printf("最长字符串长度为:%d\n",strlen(str3));
		}
	}
	return 0;
}

总结:

        ①使用gets()函数strlen()统计字符串的长度。

        ②这里还可以定义一个变量接收最大值,这样会看起来没那么臃肿。

/*
从键盘输入3个可带空格的字符串
(约定:字符数 ≤ 127字节),
输出最大的字符串。
*/ 
#include <stdio.h>
#include <string.h>
int main(void){
	char str1[128],str2[128],str3[128],strmax[128];
	printf("Please input the first string:\t");
	gets(str1);
	printf("Please input the second string:\t");
	gets(str2);
	printf("Please input the third string:\t");
	gets(str3);
	if(strcmp(str1,str2) > 0){
		strcpy(strmax,str1);
	}
	else{
		strcpy(strmax,str2);
	}
	if(strcmp(str3,strmax) > 0){
		strcpy(strmax,str3);
	}
	printf("最大的字符串是:%s\n",strmax);
	return 0;
}

总结:

        ①使用strcmp()函数比较字符串大小,比较规则是:自左到右,直到出现不同字符或'\0'为止。如果字符串1和字符串2相同时,函数值为0;如果字符串1 > 字符串2时,则函数值为一个正数;如果字符串1 < 字符串2时,则函数值为一个负数。

        ②strcpy()函数用于复制字符串。strcpy(A,B),是将B复制到A,并覆盖。

/*
设某企业2006年的产值为5000万,
计划以后每年的增长率为x
(x从键盘输入,例如输入8.75表示8.75%),
计算该企业的产值在哪年实现翻番以及翻番时的产值,
然后输出(输出时以万为单位,应考虑有小数)。
*/ 
#include <stdio.h>

int main(void){
	double increase,output=5000;
	int year;
	printf("Please input x:");
	scanf("%lf",&increase);
	for(year = 2007;;year++){
		output += output * increase/100;
		if(output >= 10000){
			break;
		}
	}
	printf("year = %d 年,厂值 = %.2f\n",year,output);
	return 0;
}

总结:

        ①这里的for循环没有结束条件,直到当满足内嵌的if条件时,才跳出循环,确实有点巧妙。

/*
从键盘读入一个字符串(约定:字符数 ≤ 127字节),
检查该字符串是否是回文。
所谓回文即正向与反向的拼写都一样,例如“adgda”。	
*/
#include <stdio.h>
int main(void)
{	
	int i,j,n,flag=0;
	char str[128];
	printf("Please input string:");
	gets(str);
	n = strlen(str);
	for(i=0,j=n-1;i<=j;i++,j--){
		if(str[i]!=str[j]){
			flag = 1;
			break;
		}
	}
	if(flag == 0){
		printf("%s 是回数。\n",str);
	}else
	{
		printf("%s 不是回数。\n",str);
	}
	return 0;

}

总结:

        ①通过循环遍历,不满足回数条件时,flag变为1,并跳出循环。

/*
猴子吃桃问题。
猴子第一天摘下若干个桃子,当即吃了一半,
还不过瘾,又多吃了一个。
第二天早上又将剩下的桃子吃掉一半,又多吃了一个。
以后每天早上都吃了前一天剩下的一半零一个。
到第n(n从键盘输入)天早上想再吃时,
就只剩下一个桃子了。
求第一天共摘了多少个桃子
(不考虑猴子是否真的能吃多少桃子)。
*/
#include <stdio.h>
int main(void)
{
	int n,total=1,i;
	printf("Please input n:");
	scanf("%d",&n);
	for(i=n-1;i>=1;i--){
		total = (total+1)*2;
	} 
	printf("total=%d\n",total);
	return 0;
}

总结:

        ①利用逆向思维:前一天的桃子个数 = (当天的桃子个数+1)* 2。

/*从键盘读入一个整数Num,
按从小到大的顺序依次输出所有满足条件的3位数:
该数各位数字的立方和等于Num。
*/
#include <stdio.h>
int main(void)
{
	int Num,i,b,s,g,flag = 0;
	printf("Please input n:");
	scanf("%d",&Num);
	for(i=100;i<1000;i++){
		b = i/100;
		s = i/10%10;
		g = i%10;
		if(b*b*b+s*s*s+g*g*g == Num){
			printf("%d\t",i);
			flag = 1;
		}
	}
	if(flag == 0){
		printf("not find!");
	}
	putchar('\n');
	return 0;
}

总结:

        ①遍历100-999之间的数,若满足条件,则输出对应结果;若没有满足条件,则信号值变为0;

/*
从键盘读入两个整数iBegin和iEnd,(默认iEnd > iBegin)
要求输出 ≥ iBegin且 ≤ iEnd的所有整数。
*/
#include <stdio.h>
int main(void)
{
	int i,iBegin,iEnd;
	printf("Please Input two number");
	scanf("%d%d",&iBegin,&iEnd);
	printf("Result:");
	for(i=iBegin;i<=iEnd;i++){
		printf("%4d",i);	
	}
	putchar('\n');	
	return 0;
}

总结:

        ①利用for循环,遍历输出两个数之间的数。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值