C语言练习题(入门)
本文最后更新于448 天前,其中的信息可能已经过时,如有错误请发送邮件到echobydq@gmail.com

C语言练习题(简单入门题)

前言

这篇文章是一些关于C语言的简单入门题,相关刷题网站为:https://www.dotcpp.com/


1. 数字的处理与判断

题目描述

给出一个不多于5位的整数,要求 1、求出它是几位数 2、分别输出每一位数字 3、按逆序输出各位数字,例如原数为321,应输出123

输入格式

一个不大于5位的数字

输出格式

三行 第一行 位数 第二行 用空格分开的每个数字,注意最后一个数字后没有空格 第三行 按逆序输出这个数

样例

输入:
12345

输出:
5
1 2 3 4 5
54321

代码

#include<stdio.h>

int main()
{

	int a[4],t,n,count=0,i=0;
	scanf("%d",&t);
	n=t;
	while(t)
	{
		a[count]=t%10;
		t/=10;
		count++;
	}
	printf("%d\n",count);
	for(i=count-1;i>0;i--)
	{
		printf("%d ",a[i]);
	}
	printf("%d\n",a[0]);
	
	while(n)
	{
		printf("%d",n%10);
		n=n/10;
	 } 
	return 0;
}


2. 字符串分类统计

题目描述

输入一行字符,分别统计出其中英文字母、数字、空格和其他字符的个数。

输入格式

一行字符,长度不超过200

输出格式

统计值

样例

输入:
aklsjflj123 sadf918u324 asdf91u32oasdf/.';123

输出:
23 16 2 4

代码

#include<stdio.h>
int main()
{
	int a=0,b=0,c=0,d=0;//a 英文,b 数字,c 空格, d 其他字符 
	char x;
	while((x=getchar())!='\n')
	{
		if(x>='a'&&x<='z'||x>='A'&&x<='Z')
		a++;
		else if(x>='1'&&x<='9')
		b++;
		else if(x==' ')
		c++;
		else d++;
	}
	printf("%d %d %d %d",a,b,c,d);
	return 0;
}


3. 筛选N以内的素数

题目描述

用简单素数筛选法求N以内的素数。

输入格式

N

输出格式

2~N的素数

样例

输入:
100

输出:
2
3
5
7
11
13
17
19
23
29
31
37
41
43
47
53
59
61
67
71
73
79
83
89
97

代码

#include <stdio.h>
int main()
{
	int i,j,n;
	scanf("%d",&n);
	for(i=2; i<n; i++)
	{
		for(j=2; j<i; j++)
		{
			if(i%j == 0)
			{
				break;
			}
		}
		
		if(j==i) //说明i只有1和j可整除
		{
			printf("%d\n",i);
		}
	
	}
	return 0;
}

4. 矩阵对角线求和

题目描述

求一个3×3矩阵对角线元素之和。

输入格式

矩阵

输出格式

主对角线 副对角线 元素和

样例

输入:
1 2 3
1 1 1
3 2 1

输出:
3 7

代码

//要点:1. sum初始化为0,否则得出第一个答案不对。
//2. for循环中给i和j赋值,不然换行时直接结束输入

#include <stdio.h>
int main()
{
	int i=0,j=0;
	int a[3][3];
	int sum1=0,sum2=0;
	for(i=0; i<3; i++)
	{
		for(j=0; j<3; j++)
		{
			scanf("%d",&a[i][j]);
		}
	}
	for(i=0; i<3; i++)
	{
		sum1 += a[i][i];
	}
	
	sum2 = a[0][2]+a[1][1]+a[2][0];
	
	printf("%d %d",sum1,sum2);
}

5.最大公约数与最小公倍数

题目描述

输入两个正整数m和n,求其最大公约数和最小公倍数。

输入格式

两个整数

输出格式

最大公约数,最小公倍数

样例

输入:5 7

输出:1 35

代码

//  辗转相除法求最大公因数:两个正整数a和b(a>b),它们的最大公约数等于a除以b的余数c和b之间的最大公约数。比如10和25,25除以10商2余5,那么10和25的最大公约数,等同于10和5的最大公约数。
//  最小公倍数:两数相乘的积除以这两个数的最大公约数

#include <stdio.h>
int main()
{
	int a,b,c,d,t,m;
	scanf("%d %d",&a,&b);
	if(a<b) 
	{
		t=a;
		a=b;
		b=t;
	}
	c = a%b;
	d = a*b;
	while(c != 0)
	{
		a = b;
		b = c;
		c = a%b;
	}
	m = d/b;
	printf("%d %d",b,m);
}

6.迭代法求平方根

题目描述

用迭代法求 平方根

公式:求a的平方根的迭代公式为: X[n+1]=(X[n]+a/X[n])/2 要求前后两次求出的差的绝对值少于0.00001。 输出保留3位小数

输入格式

X

输出格式

X的平方根

样例

输入:4

输出:2.000

代码

#include <stdio.h>
#include <math.h>
int main()
{
	int a;
	double x1,x2=1.0;
	scanf("%d",&a);
	do{
		x1 = x2;
		x2 = (x1+a/x1)/2;
	}while(fabs(x1-x2)>=0.0001);  //求浮点数x的绝对值
	printf("%0.3lf",x2);
	return 0;
}

7. 排序

7.1冒泡排序

题目描述

用冒泡法对10个整数从小到大排序。

输入格式

输入10个无序的数字

输出格式

排序好的10个整数

样例

输入:4 85 3 234 45 345 345 122 30 12

输出:
3
4
12
30
45
85
122
234
345
345

代码

#include <stdio.h>
int main()
{
	int t,i=0,j=0;
	int arr[10];
	for(i=0; i<10; i++) 
	{ 
		scanf("%d",&arr[i]);
	}
	for(i=0; i<10; i++)
	{
		for(j=0; j<9-i; j++)   //10个数,总共需要进行10-1次
		{	 // //10-1个数排完,第一个数一定已经归位
             //每次会将最大(升序)或最小(降序)放到最后面
				if(arr[j]>arr[j+1])  ////每次冒泡,进行交换
			{
				t = arr[j];
				arr[j] = arr[j+1];
				arr[j+1] = t;
			}
		}
	}
	for(j=0; j<10; j++)
		{
			printf("%d\n",arr[j]);
		}
	return 0;
}

 

7.2选择排序

题目描述

用选择法对n个整数从小到大排序。

输入格式

选择输入数字字数n,输入n个无序的数字

输出格式

排序好的n个整数

样例

输入:
10
4 85 3 234 45 345 345 122 30 12

输出:
3
4
12
30
45
85
122
234
345
345

代码

#include <stdio.h>
int main(void)
{
    int a[1001];
    int n,i,j,t;
    scanf("%d",&n);//n为要排序的数的个数
    //输入需要排序的数
    for(i=0;i<n;++i)
        scanf("%d",a+i);
    //接下来进行排序
    for(i=0;i<n-1;++i)//因为每次需要和a[i]后面的数进行比较,所以到a[n-2](倒数第2个元素)就行
    {
        for(j=i+1;j<n;++j)//j从i后一个开始,a[i]与a[j]进行比较
        {
            if(a[i]>a[j])//a[i]为当前值,若是比后面的a[j]大,进行交换
            {
                t=a[i];
                a[i]=a[j];
                a[j]=t;
            }
        }//每排序一次,就会将a[i](包括a[i])之后的最小值放在a[i]的位置
    }
	for(j=0;j<n;++j)
    printf("%d\n",a[j]);

    return 0;
}

 

觉得有帮助可以投喂下博主哦~感谢!
作者:Echo
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0协议
转载请注明文章地址及作者哦~
暂无评论

发送评论(请正确填写邮箱地址,否则将会当成垃圾评论处理) 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇