C语言练习题(二)

练习1:

#include<stdio.h>
/*
#include <string.h>
加了这一行:报错原因系统里根本就没有软件需要的运行库。
具体错误为:debug library
*/
/*
键盘输入一行字符;统计字母、空格、数字、其他字符的个数
注意:用get()只能得到7个字符元素,末尾会自动补上'\0';
输入8个数字后,会出现Stack around the variable 'xxx' was corrupted 的错误,后来发现是数组越界造成的
只能输7个元素
*/
void main(){
	int i=0;
	char array[8];   //数组类型的定义
	int countNum=0;  //数字字符计数
	int countChart=0;//字母字符计数
	int countKG=0;   //空格字符计数
	int countOther=0;//其他字符计数
	
	//键盘输出字符串
	/*
	/格式化输入字符串,由于数组名就代表着数组的首地址
	不需要再对数组名array取地址:
	正确方式:scanf("%s",array);//字符串
	C语言规定了'\0'作为字符串常量在内存中的结束标志
	字符串(后续会提到)
	思考:
	for(i=0;i<8;i++){
		scanf("%c",&array[i]);
		if(i==7){
			printf("输入数组的元素个数已经够50个了\n");
		}
	}
	*/
	gets(array);//键盘输入字符串
	printf("%s\n",array);//输出字符串
	//计数
	for(i=0;i<8;i++){
		if('0'<=array[i]&&array[i]<='9'){
			countNum++;//数字字符计数
			continue;
		}else if(array[i]==' '){
			countKG++;//空格字符计数
			continue;
		}else if(('a'<=array[i]&&array[i]<='z')||('A'<=array[i]&&array[i]<='Z')){
			countChart++;//字母字符计数
			continue;
		}else{
			countOther++;//其他字符计数
			continue;
		}
	}
	printf("数字个数:%d\n",countNum);
	printf("空格个数:%d\n",countKG);
	printf("字母个数:%d\n",countChart);
	printf("其它字符个数:%d\n",countOther);
}

点击打开链接

练习2:

/*
题目要求:
计算1-1/2+1/3-1/4+...+1/99-1/100
分析:加减是循环交替的,联想到奇偶交替
用i%2判断此时是“+”还是“-”
*/

//头文件
#include<stdio.h>

//主函数
void main(){
	int MAX;
	int i;
	double sum=0;
	scanf_s("%d",&MAX);//键盘输入
	for(i=0;i<MAX;i++){
		if(i%2==0){
			sum=sum+1.0/(i+1);
			continue;
		}else{
                        sum=sum-1.0/(i+1);
			continue;
	}
		
 }
	printf("1-1/2+1/3-1/4+...+1/99-1/100=%f\n",sum);
}
练习3:

/*
矩阵转置:m*n转置成n*m的
分析:涉及到二维数组的定义:
以整型为例:int array[3][4];
键盘输入数组时:每一行的元素要以空格结束,一行输完后,回车输入下一行或者输入一行每个元素以空格隔开
*/
#include<stdio.h>

//主函数
void main(){
	int array[3][4];
	int i;
	int j;
	//键盘循环输入
	for(i=0;i<3;i++){
		for(j=0;j<4;j++){
			scanf("%d",&array[i][j]);
		}
	}

	//为了与反转后的做对比
	printf("翻转前的数组:\n");
	for(i=0;i<3;i++){
		for(j=0;j<4;j++){
			printf("%d\t",array[i][j]);//制表符
		}
		printf("\n");//换行
	}

	int arrayInv[4][3];//保存翻转后的数组
	//数组每一个元素翻转
	for(i=0;i<4;i++){
		for(j=0;j<3;j++){
			arrayInv[i][j]=array[j][i];
		}
	}

	printf("翻转后的数组:\n");
	for(i=0;i<4;i++){
		for(j=0;j<3;j++){
			printf("%d\t",arrayInv[i][j]);//制表符
		}
		printf("\n");//换行
	}
}





  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值