C语言程序入门设计编程练习代码分享
2024-01-10 16:02:12
截图有些模糊,在代码中标明了题目输入输出要求
因直接在网站中输入代码,所以个别代码未缩进。
内容顺序为:题目+代码成功截图+可复制代码
注:后面两个是copy的其他博主的,非全原创。
?第一周? 输出Hello World
//题目要求:输出Hello World
#include <stdio.h>
int main()
{
printf("Hello World");
return 0;
}
/*----输出结果-----------
Hello World
-------------------------*/
第二周? 逆序的三位数
//题目要求:输入123 输出321
#include <stdio.h>
int main()
{
int san=123;
scanf("%d", &san);
int a,b,c;
a = san%10;
b= san / 10 ;
b= b%10;
c=san/100;
san=a*100+b*10+c;
printf("%d\n", san);
return 0;
}
/*----输出结果-----------
123
321
-------------------------*/
第三周??
时间换算
//题目要求 输入803 输出3
#include <stdio.h>
int main()
{
int BJT, UTC;
scanf("%d",&BJT);
if (BJT < 800)
{
UTC = BJT+2400 - 800;
}
else
{
UTC = BJT- 800 ;
}
printf("%d\n",UTC);
return 0;
}
/*----输出结果-----------
803
3
-------------------------*/
分队列?
//题目要求:输入11 输出1 3 5 7 9 11
#include<stdio.h>
int main()
{
int n=11;
scanf("%d",&n);
for(int i = 1;i<=n;i++)
{
if(i%2!=0)
{
printf("%d",i);
if(i!=n&&i!=n-1)//同时处理奇数偶数两种情况
printf(" ");
}
}
return 0;
}
/*----输出结果-----------
11
1 3 5 7 9 11
-------------------------*/
第四周
奇偶个数
//题目要求:输入9 3 4 2 5 7 - 1 输出4 2
#include<stdio.h>
int main()
{
int x;
int a=0,b=0; //a为奇数,b为偶数
scanf("%d",&x);
while(x!=-1)
{
if(x%2==0)
{
b++;
}
else
{
a++;
}
scanf("%d",&x);
}
printf("%d %d",a,b);
return 0;
}
/*----输出结果-----------
9 3 4 2 5 7 -1
4 2
-------------------------*/
数字特征值
//题目要求:输入342315 输出13
#include<stdio.h>
int main()
{
int num,a,c,d,e;
int b = 0;
int sum=0;
scanf("%d",&num);
if(num>=0&&num<=1000000)
{
while(num!=0)
{
a=num%10;
b=b+1;
if(a%2==b%2)
{
c=1;
}
else
{
c=0;
}
if(b==1)
{
sum=sum+c;
}
else
{
d=b-1;
e=1;
while(d!=0){
e=e*2;
d=d-1;
}
sum=sum+c*e;
}
num=num/10;
}
printf("%d",sum);
}
return 0;
}
/*----输出结果-----------
342315
13
-------------------------*/
第五周
素数和
//输入2 4 输出15
#include<stdio.h>
int main()
{
int n,m;
int i;
int sum=0,count=0;
scanf("%d %d",&n,&m);
for(i=2;count<=m;i++)
{
int j;
int x=1;
for(j=2;j<i;j++)
{
if(i%j==0)
{
x=0;
break;
}
}
if(x==1)
{
count++;
if(count>=n && count<=m)
{
sum+=i;
}
}
}
printf("%d",sum);
return 0;
}
/*----输出结果-----------
2 4
15
-------------------------*/
念整数
//输入-30 输出fu san ling
#include<stdio.h>
int main()
{
int x;//储存输入数值
scanf("%d",&x);
int mask=1;//与最高位相同用于从左向右分离数字
int d;//储存分离的数字
int t;//储存x
//判断x是否为复数
if(x<0)
{
printf("fu ");
x=-x;
}
t=x;
//获得x位数信息(通过mask体现)
while(t>9)
{
mask*=10;
t/=10;
}
//分离与输出
while(mask>0)
{
d=x/mask;
switch(d)
{ //获得拼音输出
case 1:
printf("yi");
break;
case 2:
printf("er");
break;
case 3:
printf("san");
break;
case 4:
printf("si");
break;
case 5:
printf("wu");
break;
case 6:
printf("liu");
break;
case 7:
printf("qi");
break;
case 8:
printf("ba");
break;
case 9:
printf("jiu");
break;
case 0:
printf("ling");
break;
}
if(mask>1)
{
printf(" ");
}
//移位(循环条件变换)
x%=mask;
mask/=10;
}
return 0;
}
/*----输出结果-----------
-30
fu san ling
-------------------------*/
第六周
高精度小数? 代码图选一个
?
/*输入16/19 输出0.84210526315789473684210526315789473684210526315789473684210526315789473684210526315789473684210526315789473684210526315789473684210526315789473684210526315789473684210526315789473684210526315789473684*/
#include<stdio.h>
int main()
{
const int number=200;//最多输出小数点后200位
int a,b;
scanf("%d/%d",&a,&b);
int d[number];//储存小数点后每位对应的数值
int i;
int cnt=0;//记录小数位数
//初始化位数
for(i=0;i<number;i++)
{
d[i]=0;
}
//模仿人工列竖式做除法的方式,先将被除数乘以10,得到一位商之后,将余数乘以10作为下一轮计算的被除数
while(a!=0&&cnt<number)
{ //余数为0则除尽,同时最多计算200位小数
a*=10;
d[cnt]=a/b;
a%=b;
cnt++;
}
//遍历数组输出
printf("0.");
for(i=0 ; i<cnt; i++)
{
printf("%d",d[i]);
}
printf("\n");
return 0;
}
/*----输出结果-----------
16/19
0.84210526315789473684210526315789473684210526315789473684210526315789473684210526315789473684210526315789473684210526315789473684210526315789473684210526315789473684210526315789473684210526315789473684
-------------------------*/
第七周
多项式加法
/*
输入
6 2
5 3
3 12
1 6
0 20
6 2
5 3
2 12
1 6
0 20
输出
4x6+6x5+12x3+12x2+12x+40
*/
#include<stdio.h>
void printNum(int a,int b) //a为系数(不为0),b为指数(幂)
{
if(b!=0)
{
if(a!=1)
{
printf("%d",a); //a是1的话,不用输出这个1
}
printf("x");
if(b!=1)
{
printf("%d",b); //b是1的话,也不用输出这个1
}
}
else
printf("%d",a);
}
int main()
{
int arr[101]={};
int isFirst=1;
int x,m; //x是系数, m是幂次
int cnt=0; //记录输出的次数,用于判断极端情况
for(int i=0;i<2;i++) //读入数据
{
do{
scanf("%d %d",&m,&x);
arr[m]+=x;
}while(m!=0);
}
for(int i=100;i>=0;i--){
if(arr[i]!=0){
if(isFirst){ //如果是第一个输出的
isFirst=0;
printNum(arr[i],i);
}
else{
if(arr[i]>0)
printf("+");
printNum(arr[i],i);
}
cnt++;
}
}
if(cnt==0)
printf("0"); //输入是0的特殊化处理
return 0;
}
/*----输出结果-----------
6 2
5 3
3 12
1 6
0 20
6 2
5 3
2 12
1 6
0 20
4x6+6x5+12x3+12x2+12x+40
-------------------------*/
鞍点
/*
输入:
4
1 7 4 1
4 8 3 6
1 6 1 2
0 7 8 9
输出:
2 1
*/
#include<stdio.h>
int main()
{
int n;
scanf("%d",&n);
if(n>=1 && n<=100)
{
int a[n][n];
for(int i=0;i<n;i++)
{
for(int j=0;j<n;j++)
{
scanf("%d",&a[i][j]);
}
}
int s=1,max,min;
for(int i=0;i<n;i++){
max=0;
for(int j=0;j<n;j++){
if(a[i][max]<a[i][j]){
max=j;
}
}
min=0;
for(int m=0;m<n;m++){
if(a[min][max]>a[m][max]){
min=m;
}
}
if(i == min){
s=0;
printf("%d %d",i,max);
break;
}
}
if(s == 1){
printf("NO");
}
}
return 0;
}
/*----输出结果-----------
4
1 7 4 1
4 8 3 6
1 6 1 2
0 7 8 9
2 1
-------------------------*/
?
第八周
单词长度
/*
输入:
It's great to see you here.
输出:
4 5 2 3 3 4
*/
#include<stdio.h>
int main(int argc,char*argv[]){
char c;
int i=0,j=0;
scanf("%c",&c);
while(c != '.'){
if(c == ' '){
if(i>0){
printf("%d",i);
i=0;
j++;
}
}
else{
i++;
if(j>0 && i == 1){
printf(" ");
}
}
scanf("%c",&c);
}
if(i>0){
printf("%d",i);
}
return 0;
}
/*----输出结果-----------
It's great to see you here.
4 5 2 3 3 4
-------------------------*/
?
GPS数据处理
/*
输入:
$GPRMC,024813.640,A,3158.4608,N,11848.3737,E,10.05,324.27,150706,,,A*50
END
输出:
10:48:13
*/
#include<stdio.h>
#include<string.h>
int main()
{
char ch; // 每行中'*'前以字符输入
char X[5] = "" ; // 最后两位校验以字符串输入,且由于回车换行,可以确保读取两位校验,不需要人为设置进入外部循环(即下一条GPS信息)
char output[10] = ""; // 记录最后输出的时间字符串
char str0[20] = "" ; // 记录字段0
char str1[20] = "" ; // 记录字段1
char str2 = '0' ; // 记录字段2
char str00[20] = "$GPRMC" ; // 满足标准的字段0
char str20 = 'A' ; // 满足标准的字段2
while( 1 ){
int xorsum = 0; // 记录异或,储存'*'前的自己计算的校验和
int cnt = 0; // 记录在一条GPS中位于的字段数位置
int p0 = 0, p1 = 0 ;
int check = 0; // 检验标签(GPS语句满足要求时check==3)
int stop = 0; // 退出标识符(stop==3时代表检查出了END)
// 每条GPS内语句的读取(一行)
do{ // 完成每条GPS语句'*'及之前的字符输入,相关字符储存,异或计算
scanf("%c", &ch);
{ // END退出模块
if( cnt==0 ){
if( ch=='E') stop ++;
if( ch=='N') stop ++;
if( ch=='D') stop ++;
}
if( stop==3 ) goto out;
}
if( ch!='\n' ){ // 每一行结尾以\n结束,但校验符用%s字符串读取不会读到'\n' ,故理论上第二行之后的GPS信息都会先读到上一行的'\n',故需要确定不是'\n'后再进行计算
if( ch!=',' && ch!='$' && ch!='*' ) xorsum ^= ch;
if( ch==',' ) cnt++; // 记录处于哪个字段
else{
if( cnt==0 ){
str0[p0] = ch;
// printf("%c",str0[p0]);
p0 ++;
} else if( cnt==1 ){
str1[p1] = ch;
p1 ++;
} else if( cnt==2 ){
str2 = ch ;
}
}
}
} while( ch!='*' ) ;
if( strcmp(str0,str00)==0 ) check += 1; //$GPRMC语句
if( str2==str20 ) check += 1; // 字段2表示已定位
xorsum %= 65536; // 当输入'*'时出do-while循环,计算根据前面字符获得的校验和
// printf("xorsum=%d\n",xorsum) ;
scanf("%s", X); // 读入两位校验和
int xorinput = 0; // 储存读入两位校验和的十进制值
int q ;
int index = 16;
for( q=0 ; q<2 ; q++ ){ // 校验和化为十进制
int V = 0; // 记录校验和的每位数字
if( X[q]>='0' && X[q]<='9' ) V = X[q] - '0';
else V = X[q] - 'A' + 10;
//printf("xorinput=%d\n",xorinput) ;
xorinput += index * V;
//printf("xorinput=%d\n",xorinput) ;
index /= 16;
}
//printf("xorinput=%d\n",xorinput) ;
if( xorinput==xorsum ) check += 1; //校验和正确
//if( xorinput==xorsum ) printf("hr\n");
// 格式正确的GPS处理
if( check==3 ){
//printf("hr\n");
int hour = 0;
output[2] = ':' ; output[5] = ':';
output[3] = str1[2]; output[4] = str1[3];
output[6] = str1[4]; output[7] = str1[5];
hour = (str1[0]-'0')*10 + (str1[1]-'0');
if( hour<16 ) hour += 8;
else hour = hour + 8 -24;
output[0] = '0' + hour/10;
output[1] = '0' + hour%10;
}
}
out:
printf("%s", output);
return 0;
}
/*----输出结果-----------
$GPRMC,024813.640,A,3158.4608,N,11848.3737,E,10.05,324.27,150706,,,A*50
END
10:48:13
-------------------------*/
文章来源:https://blog.csdn.net/sinat_37181108/article/details/135402265
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!