C语言练习

本文是一组C语言编程练习题的解析和解答,包括字符赋值、整数溢出、素数判断、完全平方数筛选、计数9的个数、数组排序、完数查找和报数游戏等经典问题,旨在帮助读者巩固C语言基础知识并提升编程能力。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1、已知 ch 是字符型变量,下面不正确的赋值语句是_a___。
a. ch=‘a+b’; b. ch=’\0’; c. ch=‘7’+‘9’; d. ch=5+9;

2、若整数值范围是 -32768 至 32767。在执行下面的表达式之后, i 的结果是什么?
int i=32766;
i=i+1; i =32767___
i=i+1; i =_ -32767____

3、求100以内的素数,全部打印出来
#include<stdio.h>
int main()
{
int a,i;
for ( a = 0 ; a < 100 ; a ++)
{
int b = 0 ;
for ( i =1 ; i <= a ; i ++)
{
if ( a % i == 0)
b ++ ;
}
if ( b == 2)
printf ( “%d” , a ) ;
}
return 0 ;
}
4、编写一个程序,求出满足下列条件的四位数:该数是个完全平方数,且第一、三位数字之和为10,第二、四位数字之积为12
#include <stdio.h>
#include <math.h>

int main()
{
int i;
for(i=1000;i<=9999;i++)
{
if ((i==(int)sqrt(i)(int)sqrt(i))&&((i/1000)+(i%1000%100/10)==10)&&((i%1000/100)(i%1000%100%10)==12))
printf("%d\n",i);
}
return 0;
}
6、通过编程实现,统计1~n有多少个9?(提示:n通过参数传入)
#include <stdio.h>
int main()
{
int n,a,i,j;
int sum = 0;
printf(“please input n:\n”);
scanf("%d",&n);
for(i=1;i<=n;i++)
{
j = i;
while (j !=0)
{
b = j %10;
j = j/10;
if(b ==9)
{
sum ++;
}
}
}
printf("%d\n",sum);
return 0;
}

7、输入5个数(含负数、小数)将它们按由小到大的顺序排列起来
提示:需要排数的数字通过参数传递进来,
例如:输入:./a.out -1 2.1 -3 5 7 输出: -3 -1 2.1 5 7
#include<stdio.h>
int main()
{
float a[5];
int i , j ;
float t ;
for(i = 0 ; i<5 ; i ++)
{
scanf ( “%f” , &a[i] );
}
for( i = 0 ; i < 5 ; i ++)
{
for( j = i +1 ; j < 5 ; j ++)
{
if( a[j] < a[i])
{
t = a[i] ;
a[i]=a[j];
a[j]=t ;
}
}
}
for( i = 0 ; i < 5 ; i ++ )
{
printf( " %f " , &a[i] );
}
}

8、一个数如果恰好等于它的因子之和,这个数被成为”完数”,例如:6=1+2+3.请编程找出1000以内的完数
#include<stdio.h>
int main( )
{
int i , j ;
for( i =1 ; i < 1000 ; i ++)
{
int sum = 0 ;
for( j = 1; j < i ; j ++)
{
if( i % j == 0)
{
sum += j ;
}
}
if ( sum == i)
{
printf( " %d " , i ) ;
}
}

9、有n个人围成一圈,顺序排号,从第一个开始报数(从1到3报数),凡报到3的人退出圈子,问最后最后留下的是原来第几号的那位.
提示:用数组完成
#include <stdio.h>

int main()
{
int a[100] ;
int i , n , p = 0 , q ;
scanf("%d" , &n);
q = n ;
for ( i =0 ; i < n ; i ++) a[i] = i + 1;
for ( i =0 ; ; i ++)
{
if ( i == n ) i = 0 ;
if (a[i]!= 0) p ++ ;
else continue;
if( p % 3 == 0)
{
a[i] = 0;
q – ;
}
if(q == 1) break;
}
for( i = 0 ; i < n ; i++)
if(a[i]!=0) printf("%d" , a[i]);
return 0;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值