当前位置:网站首页>C语言基础练习题初学者可参考
C语言基础练习题初学者可参考
2022-07-23 05:44:00 【lhb2998658795】
1.字符反转
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
void swap(char *a,char *b)
{
if(a==NULL&&b==NULL){
printf("The ginseng error");
exit(EXIT_SUCCESS);//若为初学者此处用return ;也是可以的,不影响使用;
//exit 为退出这个进程
}
int temp=0;
while(a<b){
temp=*a;
*a=*b;
*b=temp;
a++;
b--;
}
}
void change_word(char *a)
{
char *p,*q;
p=a;
q=a+strlen(a)-1;
swap(p,q);
q=p;
//这个还能使用while实现,但是while会增加时间复杂度,能少用尽量少用
while(*p!=0){
if(*p!=' '){
p++;
if(*p!=0){
continue;
}
}
swap(q,p-1);
if(*p==0){
break;
}
q=(++p);
}
}
int main(int argc, char const *argv[])
{
char buff[128]={0};
printf("请输入你要输入的内容");
fgets(buff,sizeof(buff),stdin);//若为初学者此处用gets(buff)也是可以的,不影响使用;
buff[strlen(buff)-1]='\0';
change_word(buff);
printf("%s\n",buff);
return 0;
}
2.输出所有小于100的质数
#include <stdio.h>>
int main(int argc, char const *argv[])
{
int n=100;
int i=0;
int j=0;
int a=0;
for(i=1;i<n;i++){
a=0;
for(j=1;j<=i;j++){
if(i%j==0){
a++;
}
}
if(a==2){
printf("%d ",i);
}
}
puts("");
return 0;
}
3交换的方式三种
3.1第一种三杯水交换
#include <stdio.h>
int main(int argc, char const *argv[])
{
int a=10;
int b=20;
int temp=0;
temp=a;
a=b;
b=temp;
printf("a=%d b=%d\n",a,b);
return 0;
}
3.2第二种异或交换
#include <stdio.h>
int main(int argc, char const *argv[])
{
int a=10;
int b=20;
int temp=0;
a=a^b;
b=a^b;
a=a^b;
printf("a=%d b=%d\n",a,b);
return 0;
}
3.3第三种交换//注意越界数值不能太大
#include <stdio.h>
int main(int argc, char const *argv[])
{
int a=10;
int b=20;
int temp=0;
b=a+b;
a=b-a;
b=b-a;
printf("a=%d b=%d\n",a,b);
4.练习: 1.设计一个程序,实现功能: 输入一个字符, 如果是大写的,就转换成小写的输出 如果是小写的,就转换成大写输出 如果是数字,就 * 10 输出 如果是其他字符,都输出 # a --> A B --> b 2 --> 20 ( --> #
#include<stdio.h>
int main(int argc, const char *argv[])
{
char v = 0;
scanf("%c", &v);
getchar();
if (v >= 'A' && v <= 'Z'){
v += 32;
printf("%c\n", v);
}else if (v >= 'a' && v <= 'z'){
v -= 32;
printf("%c\n", v);
}else if (v >= '0' && v <= '9'){
v -= '0';
v *= 10;
printf("%d\n", v);
}else{
printf("%c\n", '#');
}
return 0;
}5ifelse语句使用
练习: 编写程序计算身高 每个做父母的都关心自己孩子成人后的身高, 据有关生理卫生知识与数理统计分析表明, 影响小孩成人后身高的因素有遗传、饮食习惯与坚持体育锻炼等。 小孩成人后身高与其父母身高和自身性别密切相关。 设faHeight为其父身高,moHeight为其母身高,身高预测公式为: 男性成人时身高 = (faHeight + moHeight) * 0.54(cm) 女性成人时身高 = (faHeight * 0.923 + moHeight) / 2(cm)此外,如果喜爱体育锻炼,那么在原基础上可增加身高2% 如果有良好的卫生饮食习惯,那么在原基础上可增加身高1.5% 程序要求:父亲的身高与母亲的身高、小孩的性别、是否喜爱体育锻 炼 和是否有良好的卫生饮食习惯也从键盘上输入,最终输出预测的 身高。 提示:小孩性别的输入方式,可在屏幕给出提示“请输入小孩的性别 (男孩输入1,女孩输入0):”, 然后通过if语句来判断从键盘输入的字符是1还是0。 是否喜爱体育锻炼也可以通过类似的方式实现。
#include <stdio.h>
int main(int argc, const char *argv[])
{
double faHeight = 0;
double moHeight = 0;
double childHeight = 0;
double pe_temp = 0,food_temp = 0;//用来记录身高的曾量
int sex = 0; //性别 1男 0女
int PE = 0; //体育运动 1喜欢 0不喜欢
int FOOD = 0;//饮食习惯 1好习惯 0不好习惯
printf("请输入父亲的身高:");
scanf("%lf", &faHeight);
printf("请输入母亲的身高:");
scanf("%lf", &moHeight);
printf("请输入孩子的性别(1男生 0女生):");
scanf("%d", &sex);
if(1 == sex){
childHeight = (faHeight + moHeight) * 0.54;
}else{
childHeight = (faHeight * 0.923 + moHeight) / 2;
}
printf("请输入是否喜欢体育运动(1喜欢 0不喜欢):");
scanf("%d", &PE);
printf("请输入是否有好习惯(1有 0没有):");
scanf("%d", &FOOD);
if(1 == PE){
pe_temp = childHeight * 0.02;
}
if(1 == FOOD){
food_temp = childHeight * 0.015;
}
childHeight = childHeight + pe_temp + food_temp;
printf("预测的孩子的身高为:%.3lf\n",childHeight);
return 0;
}
6.简易计算器实现
.编写代码,实现简易计算器功能(操作数 是整数即可 + - * / %): scanf("%d %c %d",); 输入:5 + 2 输出:7 输入:10 % 3 输出:1
#include <stdio.h>
int main(int argc, const char *argv[])
{
int num1 = 0, num2 = 0;
char operator = 0;
scanf("%d %c %d", &num1, &operator, &num2);
switch(operator){
case '+':
printf("%d + %d = %d\n", num1, num2, num1+num2);
break;
case '-':
printf("%d ‐ %d = %d\n", num1, num2, num1-num2);
break;
case '*':
printf("%d * %d = %d\n", num1, num2, num1*num2);
break;
case '%':
printf("%d %% %d = %d\n", num1, num2, num1%num2);
break;
case '/':
printf("%d + %d = %.3lf\n", num1, num2, (double)num1/(double)num2);
break;
default:
printf("我仅支持 + ‐ * / %%\n");
break;
}
return 0;
}
7学生成绩等级管理
#include <stdio.h>
int main(int argc, const char *argv[])
{
int score = 0;
scanf("%d", &score);
getchar();
switch(score/10){
case 10:
case 9:
printf("A\n");
break;
case 8:
printf("B\n");
break;
case 7:
printf("C\n");
break;
default:
printf("不及格\n");
break;
}
return 0;
}8.使用while循环,实现 1~100 求和。
#include <stdio.h>
int main(){
int i = 1, sum = 0;
while(i<=100){
sum += i;
i++;
}
printf("sum = %d\n",sum);
return 0;
}9..猴子吃桃
#include <stdio.h>
int main(){
int sum = 1;
int i = 0;
while(i<9){
printf("第 %d 天,有 %d 个桃\n", 10-i, sum);
sum = (sum+1)*2;
i++;
}
printf("第 %d 天,有 %d 个桃\n", 10-i, sum);
return 0;
}10.水仙花
#include <stdio.h>
int main(int argc, const char *argv[])
{
int i = 0;
int ge = 0;
int shi = 0;
int bai = 0;
for(i = 100; i < 1000; i++){
ge = i % 10;
shi = i / 10 % 10;
bai = i / 100;
if(ge*ge*ge + shi*shi*shi + bai*bai*bai == i){
printf("%d\n", i);
}
}
return 0;
}
11排版打出下面这种结果

#include <stdio.h>
int main(int argc, char const *argv[])
{
char ch='A';
int i=0;
int j=0;
int a=0;
for(i=0;i<8;i++){
for(j=0;j<i-1;j++){
printf("_");
}
for(a=0;a<i;a++){
printf("%c",ch+a);
}
puts("");
}
return 0;
}12.输入一个数,输出这个数的所有因子。
#include <stdio.h>
int main(int argc, const char *argv[])
{
int num = 0;
scanf("%d", &num);
getchar();
for(int i= 1; i <= num; i++){
if(num%i == 0){
printf("%d\n", i);
}
}
return 0;
}
13完美数
#include <stdio.h>
int main(int argc, const char *argv[])
{
int i = 0;
int j = 0;
int sum = 0;
for(i = 1; i < 1000; i++){
sum = 0;
for(j = 1; j < i; j++){
if(i%j == 0){
sum += j;
}
}
if(sum == i){
printf("%d\n", i);
}
}
return 0;
}
13练习: 1.定义一个10个长度的int数组,并全部初始化成0, 循环给数组成员赋值,赋的值来自键盘输入; 输出数组中最大的元素及最大元素的下标。
#include <stdio.h>
int main(){
int arr[10] = {0};
int i = 0;
int max_index = 0;
for(i = 0; i < 10; i++){
scanf("%d", &arr[i]);
}
for(i = 1; i < 10; i++){
if(arr[i] > arr[max_index]){
max_index = i;
}
}
printf("max_value = %d , max_index = %d\n",arr[max_index],max_index);
return 0;
}14冒泡排序
#include <stdio.h>
int main(int argc, const char *argv[])
{
int s[10] = {23,45,65,78,90,55,33,17,96,54};
int i = 0;
int j = 0;
int temp = 0;
int flags=0;
int len = sizeof(s)/sizeof(int);
for(i = 0; i < len; i++){
printf("%d ", s[i]);
}
printf("\n");
for(j = 0; j < len-1; j++){
flags=0;
for(i = 0; i < len-1-j; i++){
if(s[i] > s[i+1]){
temp = s[i];
s[i] = s[i+1];
s[i+1] = temp;
flags=1;
}
}
if(flags==0){
break;
}
}
for(i = 0; i < len; i++){
printf("%d ", s[i]);
}
printf("\n");
return 0;
}
15strlen函数
#include <stdio.h>
int mystrlen(char *num)
{
int i=0;
while(*num){
i++;
num++;
}
return i;
}
int main(int argc, char const *argv[])
{
char num[20]="i love china";
int length=0;
length=mystrlen(num);
printf("%d\n",length);
return 0;
}16strcat
#include <stdio.h>
void mystrcat(char *dest, char *src)
{
//1.判断地址是否是空,如果是空就退出
if(dest == NULL || src == NULL){
return ;
}
//2.找到dest的'\0'
while(*dest){
dest++;
}
//3.拷贝数据
while(*src){
*dest++ = *src++;
}
//4.给dest赋结束符号
*dest = '\0';
}
int main(int argc, const char *argv[])
{
char arr[50] = {0};
char brr[100] = {0};
printf("input string (arr) > ");
gets(arr);
printf("input string (brr) > ");
gets(brr);
mystrcat(brr,arr);
printf("brr = %s\n",brr);
return 0;
}
16strcpy
#include <stdio.h>
void mystrcpy(char *dest, char *src)
{
//1.判断地址是否是空,如果是空就退出
if(dest == NULL || src == NULL){
return ;
}
//2.拷贝数据
while(*src){
*dest++ = *src++;
}
//3.给dest赋结束符号
*dest = '\0';
}
int main(int argc, const char *argv[])
{
char arr[100] = {0};
char brr[100] = {0};
printf("input string (arr) > ");
gets(arr);
mystrcpy(brr,arr);
printf("brr = %s\n",brr);
return 0;
}17strcmp
#include <stdio.h>
int mystrcmp(char *a,char *b)
{
while(*a&&*b&&*a==*b){
a++;
b++;
}
if((*a-*b)>0){
return 1;
}else if((*a-*b)<0){
return -1;
}else{
return 0;
}
}
int main(int argc, char const *argv[])
{
char a[20]={0};
char b[20]={0};
int flag=0;
printf("Please enter the value of a >");
gets(a);
printf("Please enter the value of b >");
gets(b);
flag=mystrcmp(a,b);
if(flag>0){
printf("a>b\n");
}else if(flag<0){
printf("a<b\n");
}else{
printf("a=b\n");
}
return 0;
}
18编写atoi函数
#include <stdio.h>
void my_gets(char *a,int n)
{
int i=0;
while(i<n){
if((a[i]=getchar())=='\n'){
i++;
break;
}
i++;
}
a[i]=0;
}
int my_atoi(char *s)
{
int num=0;
int sig=1;
if(*s=='-'){
sig=-1;
}
if(*s=='-'||*s=='+'){
s++;
}
while((*s)>='0'&&(*s)<='9'){
num=num*10+*s-'0';
s++;
}
return sig*num;
}
int main(int argc, const char *argv[]){
char array[50]={0};
my_gets(array,100);
printf("%d\n",my_atoi(array));
return 0;
}
19斐波那契数列
#include <stdio.h>
int main(int argc, const char *argv[]){
int s[20]={1,1};
int i=0;
for(i=2;i<20;i++){
s[i]=s[i-1]+s[i-2];
}
for(i=0;i<20;i++){
printf("%d ",s[i]);
}
puts("");
return 0;
}
20数组中找最大值
#include <stdio.h>
int main(int argc, const char *argv[]){
int arr[10]={0};
int i=0;
for(i=0;i<10;i++){
scanf("%d",&arr[i]);
}
int max=0;
for(i=0;i<10;i++){
if(arr[i]>arr[max]){
max=i;
}
}
printf("%d %d\n",max,arr[max]);
return 0;
}
21九九乘法表
#include <stdio.h>
int main(int argc, char const *argv[])
{
int i=0;
int j=0;
for(i=1;i<10;i++){
for(j=1;j<=i;j++){
printf("%d*%d=%d ",j,i,i*j);
}
puts("");
}
return 0;
}
22万年历
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
int main (){
int year = 0, month = 0, day = 0;
int hour = 0, min = 0, sec = 0;
scanf("%d%d%d%d%d%d", &year, &month, &day
, &hour, &min, &sec);//输入时 以空格分隔
while(1){
system("clear");//调用clear命令清屏,实现单行显示
printf("%4d-%02d-%02d %02d:%02d:%02d\n",
year, month, day, hour, min, sec);//%02d 是格式化输出 后面讲
sec++;
if(60 == sec){
sec = 0;
min++;
if(60 == min){
min = 0;
hour++;
if(24 == hour){
hour = 0;
day++;
//31天的月
if(1 == month || 3 == month || 5 == month || 7 == month || 8 == month
|| 10 == month || 12 == month){
if(32 == day){
day = 1;
month++;
}
//30天的月
}else if(4 == month || 6 == month || 9 == month || 11 == month || 8 == month){
if(31 == day){
day = 1;
month++;
}
//闰年的2月
}else if((year%4==0 && year%100!=0) || year%400==0){
if(30 == day){
day = 1;
month++;
}
//平年的2月
}else{
if(29 == day){
day = 1;
month++;
}
}
if(13 == month){
month = 1;
year++;
}
}
}
}
sleep(1);//休眠1秒
}
return 0;
}边栏推荐
- obs插件基础
- [AUTOSAR com 3. signal sending and receiving process tx/rx]
- 高分子合成工艺学复习考题
- 【AUTOSAR COM 1.通信协议栈介绍】
- AWK 程序设计语言
- 合成中文识别数据集的相关repo
- Blog building 4: how to add your blog to Baidu and Google
- Data analysis (I)
- [AUTOSAR candrive 2. understand the mapping relationship between communication HOH, canid and pduid]
- [CAN总线的物理层 ]1.CAN/CANFD采样的点的内容分享
猜你喜欢

Deep learning neural network

【存储器了解 RAM flash和eeprom存储器的区别和作用】

Data analysis of time series (I): main components

常见的排序—交换排序

Interpretation of the paper: DNA enhancer sequence recognition transformer structure based on Bert and two-dimensional convolutional neural network

B树 和 B+树

Steel structure review questions

钢结构基本原理全面详细总结

堆的实现与堆排序实现

Uni native plug-in development -- Youmeng one click login
随机推荐
对字符串函数的使用和理解(2)
Deep learning neural network
高电压技术-名词解释题
Prometheus
【AUTOSAR COM 3.信号的收发流程TX/RX】
Interpretation of the paper: develop a prediction model based on multi-layer deep learning to identify DNA N4 methylcytosine modification
Object based - two classic classes
【AUTOSAR COM 2.通信协议栈进阶介绍】
嵌入式从入门到精通(入土)——超详细知识点分享3
Redis——配置及应用
Enter the triangle side length and calculate the area
Interpretation of the paper: "deep-4mcw2v: sequence based predictor for identifying N4 methylcytosine (4mc) sites in E. coli"
B树 和 B+树
Baidu Shen Shuo: focus on the scene, deeply cultivate the industry, and bring practical results to enterprise Digitalization
快速排序的按区间的三个版本及优化--友友们不一定了解
Tencent cloud client command line tool tccli main process analysis
Prometheus
[learning summary]
高分子物理名词解释归纳
Related repo of synthetic Chinese recognition dataset