1.输出方形。
#include<stdio.h>
int main()
{
char star='*', space = ' ';
int a,i,j;
for (a = 0; a < 5; a++)
{
if (a == 0 || a== 4)
for (i = 0; i < 4; i++)
putchar(star);
else
{
putchar(star);
for (j = 0; j< 2; j++)
putchar(space);
putchar(star);
}
printf("\n");
}
}
2.输出菱形。
#include<stdio.h>
int main()
{
char star = '*', space = ' ';
int a, b, m, n;
for (a = 0; a < 5; a++)
{
if (a < 3)
m = 22 - a , n = 2 * a + 1;
else
m = a + 18 , n = 9 - 2 * a;
for (b = 0; b < m; b++)
putchar(space);
for (b = 0; b < n; b++)
putchar(star);
printf("\n");
}
}
3.输入一段字符,输出每3字符空1格。
#include<stdio.h>
void main()
{
char *p, a[20],*q,b[20];
gets(a);
p = a, q = b;
int i = 1;
for (; *p; p++, i++)
{
*q = *p;
q++;
if (i % 3 == 0)
*q = ' ', q++;
}
*q = '\0';
puts(b);
}
4.删星号。
#include<stdio.h>
int main()
{
char* p, a[20],*q,b[20];
gets(a);
p = a, q = b;
while (*p)
{
if (*p != '*')
*q= *p,q++;
p++;
}
*q = '\0';
puts(b);
}
5.回归数。获取num=abc,且num=a*a*a + b*b*b + c*c*c。
#include<stdio.h>
int regress(int num)
{
int a, b, c;
a = num / 100;
b = (num % 100) / 10;
c = num % 10;
if (num == a*a*a + b*b*b + c*c*c)
printf("%d ", num);
return 1;
}
int main()
{
for (int num = 100; num < 1000; num++)
regress(num);
}
6.数的平方是3位数。
#include<stdio.h>
#include<math.h>
int main()
{
int x,y,n=0, a,b,c;
for (x = 999; x >99; x--)
{
a = x / 100, b = (x - a * 100) / 10, c = x % 10, y = sqrt((float)x);
if ((x == y * y) && ((a == b) +( b == c) +( a == c) ==1))
{
printf("%5d", x); n++;
}
}
printf("\n数的平方是3位数的共有%d个数", n);
}
7.获得n=6xx...x,m=xx...x6,且n=4*m。
#include<stdio.h>
int main()
{
int n, m, i;
for (i = 0; i < 10; i++)
{
n = 60 + i;
m = i * 10 + 6;
if (n == 4 * m)
{
printf("n=%d\n", n);
printf("m=%d", m);
break;
}
}
for (i = 0; i < 100; i++)
{
n = 600 + i;
m = i * 10 + 6;
if (n == 4 * m)
{
printf("n=%d\n", n);
printf("m=%d", m);
break;
}
}
for (i = 0; i < 1000; i++)
{
n = 6000 + i;
m = i * 10 + 6;
if (n == 4 * m)
{
printf("n=%d\n", n);
printf("m=%d", m);
break;
}
}
for (i = 0; i < 10000; i++)
{
n = 60000 + i;
m = i * 10 + 6;
if (n == 4 * m)
{
printf("n=%d\n", n);
printf("m=%d", m);
break;
}
}
for (i = 0; i < 100000; i++)
{
n = 600000 + i;
m = i * 10 + 6;
if (n == 4 * m)
{
printf("n=%d\n", n);
printf("m=%d", m);
break;
}
}
}
8.十进制转换二进制。
#include<stdio.h>
int main()
{
int num;
char StringNum[20];
int i, j, Num[20];
puts("请输入十进制整数num:");
scanf("%d", &num);
for (i = 0; num != 0; ++i)
{
Num[i] = (num % 2);
num /= 2;
}
for (j = 0; j < i; ++j)
StringNum[j] =Num[i-j-1] ? '1' : '0';
StringNum[j] = 0;
puts("转换成二进制字符串:");
puts(StringNum);
}
9.求10个整数中不相同数的个数。
#include<stdio.h>
int main()
{
int num[10], i, j,k, n = 0;
printf("请输入10个整数:\n");
for (i = 0; i < 10; i++)
scanf("%d",&num[i]);
for (i = 0; i < 10; i++)
{
for (j = 0; j < i; j++)
{
if (num[i] == num[j]) break;
}
if (i <= j) n++;
}
printf("10个整数中不相同数的个数为%d", n);
}
10.获得连续数字。
#include<stdio.h>
int main()
{
char* p, * q, a[20] , b[20];
int n = 0;
gets(a);
p = a, q = b;
for(;*p; p++)
while (*p >= '0' && *p <= '9')
{
*q = *p, q++, p++;
if (*p >= '0' && *p <= '9')
*q = *p, q++, p++, n++;
else
{
q--; break;
}
for(;*p >= '0' && *p <= '9';q++, p++)
*q = *p;
*q = ',', q++,p++;
if(*p=='\0')
break;
}
*(--q) = '\0';
printf("连续数字有%d个:", n);
puts(b);
}
11.输出年份日历。
#include <stdio.h>
int year(int y)
{
if ((y % 4 == 0) && (y % 100 != 0) || y % 400 == 0)
return 366;
else
return 365;
}
int main()
{
int y;
int i, j, sum = 0;
int begin, week;
int days[12] = { 31,28,31,30,31,30,31,31,30,31,30,31 };
scanf("输入年份:");
scanf("%d", &y);
for (i = 1; i < y; i++)
sum += year(i);
week = (sum + 1) % 7; //表示该年1月1日为星期几
if (year(y) == 366)
days[1] = 29;
printf("\n%d年日历如下:\n\n", y);
for (i = 0; i < 12; i++)
{
printf(" %d月 \n", i + 1);
printf(" 7 1 2 3 4 5 6\n");
printf("=====================\n");
begin = 1;
for (j = 0; j < week; j++)
printf(" ");
while (begin <= days[i])
{
printf("%3d", begin);
begin++;
week = (week + 1) % 7;
if (week % 7 == 0)
printf("\n");
}
printf("\n\n");
}
return 0;
}
12.使用函数排序。
#include <stdio.h>
void swap(int *a, int *b)
{
int c;
if (*a > *b)
c =* a,* a =* b, *b = c;
}
int main()
{
int a, b;
printf("a=");
scanf("%d",&a);
printf("b=");
scanf("%d",&b);
swap(&a, &b);
printf("a=%d,b=%d", a, b);
}
13.冒泡排序。
#include<stdio.h>
void tmp(int a[10])
{
int i, j, k, t;
for (i = 0; i < 9; i++)
for (j = 0; j < 9-i; j++)
if (a[j] >a[j+1]) //把大的数放后面
t = a[j], a[j] = a[j+1], a[j+1] = t;
}
int main()
{
int a[10], i;
printf("请输入10个整数:\n");
for (i = 0; i < 10; i++)
scanf("%d", &a[i]);
tmp(a);
printf("排序后的10个整数为:\n");
for (i = 0; i < 10; i++)
printf("%d ", a[i]);
}
14.选择排序。
#include<stdio.h>
void tmp(int a[10])
{
int i, j, k, t;
for (i = 0; i < 9; i++)
{
k = i;
for (j = i + 1; j < 10; j++)
if (a[k] > a[j]) //把小的放前面
k = j;
if (k!=i)
t = a[i], a[i] = a[k], a[k] = t;
}
}
int main()
{
int a[10], i;
printf("请输入10个整数:\n");
for (i = 0; i < 10; i++)
scanf("%d", &a[i]);
tmp(a);
printf("排序后的10个整数为:\n");
for (i = 0; i < 10; i++)
printf("%d ", a[i]);
}
15.国家名称排序。
#include<stdio.h>
#include<string.h>
int main()
{
char n[20], name[5][20];
int i, j,m;
puts("请输入5个国家名称:\n");
for (i = 0; i < 5; i++)
gets(name[i]);
for (i = 0; i < 4; i++)
{
m = i;
for (j = i+1; j < 5; j++)
{
if (strcmp(name[m], name[j]) > 0)
m = j;
}
if (m != i)
strcpy_s(n, name[i]), strcpy_s(name[i], name[m]), strcpy_s(name[m], n);
}
puts("排序后的名称:\n");
for (i = 0; i < 5; i++)
puts(name[i]);
}
// #include<stdio.h>
// #include<string.h>
// int main()
// {
// char n[20], name[5][20];
// int i, j;
// puts("请输入5个国家名称:\n");
// for (i = 0; i < 5; i++)
// gets(name[i]);
// for (i = 0; i < 5; i++)
// for (j = 0; j < 5; j++)
// if (strcmp(name[i], name[j]) >0)
// strcpy_s(n, name[i]), strcpy_s(name[i], name[j]), strcpy_s(name[j], n);
// puts("排序后的名称:\n");
// for (; i>=0; i--)
// puts(name[i]);
// }
16.对字符串排序不重复。
// #pragma warning(disable : 4996)
#include<stdio.h>
#include<string.h>
int main()
{
char str[100], * p, * q, * r, c;
printf("please input a string:");
gets(str);
for (p = str; *p; p++)
{
for (q = p, r = p; *q; q++)
if (*r>*q)
r = q;
if (r!=p)
{
c = *r;
*r = *p;
*p = c;
}
}
for (p = str; *p; p++)
{
for (q = p; *p == *q; q++);
strcpy(p+1, q);
}
printf("the sorted and non-repetitive result is:%s\n", str);
}
17.指针获取最大值和最小值。
// #include<stdio.h>
// #define a 3
// void max_min(double* num, double* max, double* min) {
// for (int i = 1; i < a; i++) {
// if (num[i] > *max)
// *max = num[i];
// if (num[i] < *min)
// *min= num[i];
// }
// }
// int main() {
// double num[a],* max=num, * min=num;
// for (int j = 0; j < a; j++)
// scanf("%lf", &num[j]);
// *max = num[0], * min = num[0];
// max_min(&num[1], max, min);
// printf("max=%lf\n", *max);
// printf("min=%lf\n", *min);
// }
#include <stdio.h>
#include <stdlib.h> //<cstdlib>
#define SIZE 3
void max_min(double* num, double* max, double* min) {
for (int i = 0; i < SIZE; i++) {
// printf("------------%d------------\n",i);
if (num[i] > *max){
// printf("num[i]=%lf\n", num[i]);
// printf("max=%lf\n", *max);
// printf("--------------------------\n");
*max = num[i];
}
if (num[i] < *min){
// printf("num[i]=%lf\n", num[i]);
// printf("min=%lf\n", *min);
// printf("--------------------------\n");
*min = num[i];
}
// printf("num[i]=%lf\n", num[i]);
// printf("max=%lf\n", *max);
// printf("min=%lf\n", *min);
}
}
int main() {
double num[SIZE];
double *max = (double*)malloc(sizeof(double)); //分配空间
double *min = (double*)malloc(sizeof(double)); //分配空间
// 读取数组元素
for (int i = 0; i < SIZE; i++)
scanf("%lf", &num[i]);
// 初始化最大值和最小值为数组的第一个元素
*max = num[0];
*min = num[0];
// 调用max_min函数找到最大值和最小值
max_min(num, max, min);
printf("max=%lf\n", *max);
printf("min=%lf\n", *min);
return 0;
}
18.指针比较字符串大小。
#include<stdio.h>
int main()
{
char* p, * q, a[20], b[20];
gets(a), gets(b);
p= a, q= b;
for (; *p; q++, p++)
{
if (*p > *q)
{
printf("%s>%s", a, b); break;
}
if (*p < *q)
{
printf("%s<%s", a, b); break;
}
}
if(*p=='\0')
if (*q)
printf("%s<%s", a, b);
else
printf("%s==%s", a, b);
}
19.指针连接字符串。
#include<stdio.h>
int main()
{
char *p1,*p2, a[20], b[20];
gets(a),gets(b);
p1 = a, p2 = b;
while (*p1)
p1++;
while (*p1 = *p2)
p1++,p2++;
*p1 = '\0';
puts(a);
}
标签:10,++,练习,C语言,int,num,printf,include
From: https://blog.csdn.net/qq_69866029/article/details/136791576