C编程题练习

发布时间:2024年01月07日

1.题目名称:杨氏矩阵

内容:有一个数字矩阵,矩阵的每行从左到右是递增的,矩阵从上到下是递增的,请编写程序在这样的矩阵中查找某个数字是否存在。

#include <stdio.h>

//杨氏矩阵
//1 2 3
//4 5 6
//7 8 9

int main(char* argc,int argv[])
{
?? ?int arr[3][3] = {1,2,3,4,5,6,7,8,9};
?? ?int k = 0, x = 2, y = 0, flag=0;
?? ?scanf("%d",&k);?
?? ?while (x>=0&&y<=2)?
?? ?{
?? ??? ?if (arr[x][y]>k)
?? ??? ?{
?? ??? ??? ?x--;
?? ??? ?}
?? ??? ?else if(arr[x][y]<k)
?? ??? ?{
?? ??? ??? ?y++;
?? ??? ?}
?? ??? ?else?
?? ??? ?{
?? ??? ??? ?printf("找到了,下标是:%d %d\n",x,y);
?? ??? ??? ?flag = 1;
?? ??? ??? ?break;
?? ??? ?}
?? ?}
?? ?if (flag==0)?
?? ?{
?? ??? ?printf("找不到\n");
?? ?}
?? ?return 0;
}

2.题目名称:打印菱形

内容:
? ? ? *
? ? ?***
?? ?*****
? ?*******
? *********
?***********
*************
?***********
? *********
? ?*******
?? ?*****
?? ? ***
?? ? ?*

#include <stdio.h>

int main()

{

?? ?int line = 0;
?? ?scanf("%d",&line);
?? ?int i = 0,sum=0;
?? ?for (i=0;i<=line;i++)?
?? ?{
?? ??? ?int j = 0;
?? ??? ?for (j=0;j<line-i;j++)?
?? ??? ?{
?? ??? ??? ?printf(" ");
?? ??? ?}
?? ??? ?for (j = 0; j <2*i-1 ; j++)
?? ??? ?{
?? ??? ??? ?printf("*");
?? ??? ?}
?? ??? ?sum = j;
?? ??? ?printf("\n");
?? ?}
?? ?for (i=0;i<line-1;i++)?
?? ?{
?? ??? ?int j = 0;
?? ??? ?for (j=0;j<i+1;j++)
?? ??? ?{
?? ??? ??? ?printf(" ");
?? ??? ?}
?? ??? ?for (j = 0; j < 2*(line-1-i)-1; j++)
?? ??? ?{
?? ??? ??? ?printf("*");
?? ??? ?}
?? ??? ?printf("\n");
?? ?}

return 0;

}

3.题目名称:求0-100000的自幂数

内容:如果在一个固定的进制中,一个n位自然数等于自身各个数位上数字的n次幂之和,则称此数为自幂数

for (int i = 0; i <= 100000; i++)
{
?? ?//1.判断i是否是自幂数
?? ?int n = 1;
?? ?int tmp = i;
?? ?while (tmp/=10)?
?? ?{
?? ??? ?n++;
?? ?}

?? ?//2.求每一位n次方之和
?? ?tmp = i;
?? ?int sum = 0;
?? ?while (tmp)?
?? ?{
?? ??? ?sum+=pow(tmp % 10,n);
?? ??? ?tmp /= 10;
?? ?}
?? ?
?? ?//3.判断
?? ?if (sum==i)?
?? ?{
?? ??? ?printf("%d\n",i);
?? ?}
}

4.题目名称:求n项和

内容:求Sn=a+aa+aaa+aaaa+aaaaa的前5项之和,其中a是一个随机正整数。? ? 2+22+222+2222+22222
int a = 0;
int n = 0;
scanf("%d %d",&a,&n);
int i = 0;
int sum = 0;
int k = 0;
for (i=0;i<n;i++)?
{
?? ?k = k * 10 + a;
?? ?sum += k;
}
printf("%d\n",sum);

5.题目名称:瓶换钱问题

内容:喝汽水,1瓶汽水1元,2个空瓶换一瓶汽水,给20元,可以喝多少汽水(编程实现)

?? ?int money = 0;
?? ?int total = 0;
?? ?int empty = 0;
?? ?scanf("%d",&money);
?? ?total += money;
?? ?empty += money;
? ?//?空 换回饮料 ?剩余空瓶
? ?//20 ? 10 ? ? ? 0
? ?// 10 ? 5 ? ? ? ?0
? ?// 5 ? ?2 ? ? ? ?1
? ?// 3 ? ?1 ? ? ? ?1
? ?// 1 ? ?0 ? ? ? ?0

?? ?while (empty>=2)?
?? ?{
?? ??? ?total = total + empty / 2;
?? ??? ?empty = empty/2+empty % 2;
?? ??? ?printf("%d\n",empty);
?? ??? ?
?? ?}
?? ?printf("%d", total);

6.题目名称:数字判断移动问题

内容:调整数组中数字的顺序使得数组中所有奇数位于数组的前半段,偶数位于数组的后半段

int arr[] = {1,2,3,4,5,6,7,8,9};
int sz = sizeof(arr) / sizeof(arr[0]);
int l = 0;
int r = sz - 1;
while(l<r)
{
?? ?//从前向后找一个偶数
?? ?while (l<r&&arr[l] % 2 != 0)
?? ?{
?? ??? ?l++;
?? ?}
?? ?//从后向前找一个奇数
?? ?while (l<r&&arr[r] % 2 == 0)
?? ?{
?? ??? ?r--;
?? ?}
?? ?if(l<r)
?{
?? ??? ?int temp;
?? ??? ?temp = arr[l];
?? ??? ?arr[l] = arr[r];
?? ??? ?arr[r] = temp;
?? ?}
?}
for (int i=0;i<sz;i++)?
{
?? ?printf("%d\n", arr[i]);
}

文章来源:https://blog.csdn.net/qq_54933168/article/details/135433501
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。