打印杨辉三角
#include<stdio.h>
int main()
{
int arr[11][11];
int n=0;
arr[0][0]=0;
scanf("%d",&n);
for(int i=0;i<n;i++)
{
for(int k=0;k<n-i-1;k++)
{
printf(" ");
}
for(int j=0;j<=i;j++)
{
if(i==j)
{
arr[i][j]=1;
}
else if(j==0)
{
arr[i][j]=1;
}
else
{
arr[i][j]=arr[i-1][j-1]+arr[i-1][j];
}
printf("%4d",arr[i][j]);
if(i==j)
{
printf("\n");
}
}
}
return 0;
}
2
int main()
{
int arr[10][10] = { 0 };
int i = 0;
for (i=0;i<10;i++)
{
arr[i][0] = 1;
int j = 0;
for (j = 0; j < i + 1; j++)
{
if (i == j)
{
arr[i][j] = 1;
}
if (i > 1 && j > 0)
{
arr[i][j] = arr[i - 1][j - 1] + arr[i - 1][j];
}
printf("%d ",arr[i][j]);
}
printf("\n");
}
return 0;
}
将给定的n个整数从小到大排序后输出(选择法、冒泡法)。
#include <stdio.h>
int main()
{
int x,a[10],b[10],i;
scanf("%d",&x);
for(i=0;i<x;i++)
{
scanf("%d",&a[i]);
}
for(i=0;i<x;i++)
{
b[x-1-i]=a[i];
}
for(i=0;i<x;i++)
{
a[i]=b[i];
}
for(i=0;i<x;i++)
{
if(i==0)
printf("%d",a[i]);
else
printf(" %d",a[i]);
}
return 0;
}
本题要求将给定的n个整数从大到小排序后输出
#include<stdio.h>
int main()
{
int i, j, n, tmp;
scanf( "%d", &n );
int a[n];
for( i = 0; i < n; i++ )
scanf( "%d", &a[i] );
for( i = 0; i < n - 1; i++ )
{
for( j = i + 1; j < n; j++ )
{
if( a[i] < a[j] )
{
tmp = a[i];
a[i] = a[j];
a[j] = tmp;
}
}
}
printf( "%d", a[0] );
for( i = 1; i < n; i++ )
printf( " %d", a[i] );
printf( "\n" );
return 0;
}
打印九九口诀表
#include<stdio.h>
int main(void)
{
int n;
int i,j;
scanf("%d",&n);
for( i=1;i<=n;i++)
{
for(j=1;j<=i;j++)
{
printf("%d*%d=%-4d",j,i,j*i);
}
if(i!=n)
printf("\n");
}
return 0;
}
编写程序求a+aa+aaa++⋯+aa⋯a(n个a)之和
#include<stdio.h>
int main()
{
int a=0,n=0,sum=0;
scanf("%d %d",&a,&n);
int i,t;
t=a;
for(i=1;i<=n;i++)
{
sum+=a;
a=a*10+t;
}
printf("s = %d",sum);
return 0;
}
2
#include<stdio.h>
#include<math.h>
int main()
{
int n,a,i,j;
double num=0,sum=0;
scanf("%d %d",&a,&n);
for(i=1;i<=n;i++)
{
for(j=1;j<=i;j++)
{
num=num+a*pow(10,j-1);
}
sum=sum+num;
num=0;
}
printf("s = %.0f",sum);
return 0;
}
找出三位水仙花数
#include<stdio.h>
#include<math.h>
int main(void)
{
int M,N,q,w;
int g,s,b;
scanf("%d%d",&M,&N);
q=M;
w=N;
if(M<=N&&M>=100&&N>=100&&N<=999)
{
for(q;q<=w;q++)
{
g=q%10;
s=q%100/10;
b=q/100;
if(q==pow(g,3)+pow(s,3)+pow(b,3))
{
printf("%d\n",q);
}
}
}
else
{
printf("Invalid Value.");
}
return 0;
}
判断一个三位数是否为水仙花数
#include <stdio.h>
void main()
{
int a, b,c,n;
scanf ("%d",&n);
a=n%10;
b=n/10%10;
c=n/100;
if(n>=100 && n<=999 && n==a*a*a+b*b*b+c*c*c)
printf ("Yes\n");
if(n>=100 && n<=999 && n!=a*a*a+b*b*b+c*c*c)
printf("No\n");
if(n<100||n>999)
printf("Invalid Value.\n");
return 0;
}
实现一个计算m到n之间所有整数的和的简单函数
#include <stdio.h>
int sum(int m, int n);
int main()
{
int m, n;
scanf("%d %d", &m, &n);
printf("sum = %d\n", sum(m, n));
return 0;
}
/* 你的代码将被嵌在这里 */
int sum( int m, int n ){
int i, sum=0;
for(i=m;i<=n;i++){
sum+=i;
}
return sum;
}
实现一个计算 n!的函数
#include<stdio.h>
long factorial(int);//声明函数factorial()
int main(){
int n;
long y;
printf("Input a integer number:");
scanf("%d",&n);
y=factorial(n);//调用函数factorial()
printf("%d!=%ld",n,y);
}
long factorial(int n){//定义函数factorial(),采用递归方法实现
if(n==0||n==1) return 1;
else return factorial(n-1)*n;//factorial()函数体中又调用factorial()函数本身
}
实现一个计算两个数的最大公约数的简单函数
#include<stdio.h>
//P35 求两个数的最大公约数
int main() {
int m ,n,tmp;
scanf("%d,%d", & m, &n);
if (m > n) {//求两者中的较小值
tmp = n;
}
else {
tmp = m;
}
int i = 0;
for (i = tmp; i > 0; i--) {
if (m % i == 0 && n % i == 0) {
printf("最大公约数为:%d", i);
break;
}
}
return 0;
}
对顺序读入的n个整数,顺次计算后项减前项之差,并按每行4个元素的格式输出结果
int main()
{
int i, j, n;
int arr[100];
scanf("%d", &n);
for (i = 0;i < n;i++)
{
scanf("%d", &arr[i]);
}
for (i = 1;i < n;i++)
{
if (i == 4 || i == 1||i==7)
{
printf("%d", arr[i] - arr[i - 1]);
}
else {
printf(" %d", arr[i] - arr[i - 1]);
if (i % 3 == 0)
printf("\n");
}
}
return 0;
}
顺序查找
//C版本
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#define ARR_SIZE 10
int linear_search(const int *arr, const int n, const int val)
{
for (int i = 0; i < n; i++)
{
if (arr[i] == val)
return i;
}
return -1;
}
int main(int argc, char *argv[])
{
srand(time(NULL));
int arr[ARR_SIZE] = {0};
int val = rand()%10 + 1;
int index = -1;
printf("arr = ");
for (int i = 0; i < ARR_SIZE; i++)
{
arr[i] = rand()%10 + 1;
printf("%d ", arr[i]);
}
printf("\n");
printf("search val = %d\n", val);
index = linear_search(arr, ARR_SIZE, val);
printf("index = %d\n", index);
return 0;
}
2
int Find(int a[],int x)
{
int index = -1;
for(int i=0;i<(sizeof(a)/sizeof(a[0]));i++)
{
if(a[i]==x)
{
index = i;
break;
}
}
return index;
}
二分查找
#include <stdio.h>
#include <stdlib.h>
// 自定义二分查找函数
int my_bsearch(int target, int arr[], int len)
{
int left = 0; // 左边界
int right = len - 1; // 右边界
int mid; // 中间位置
while (left <= right)
{
mid = (left + right) / 2; // 计算中间位置
if (arr[mid] == target) // 如果中间值等于目标值
{
return mid; // 返回中间索引
}
if (arr[mid] > target) // 如果中间值大于目标值
{
right = mid - 1; // 将右边界缩小为中间索引减一
}
else if (arr[mid] < target) // 如果中间值小于目标值
{
left = mid + 1; // 将左边界增大为中间索引加一
}
}
return -1; // 未找到目标值,返回 -1
}
int main()
{
int arr[] = { 4, 9, 13, 19, 26, 45, 71 };
int len = sizeof(arr) / sizeof(int); // 计算数组长度
int num = 26; // 要查找的目标值
int index = my_bsearch(num, arr, len); // 调用自定义二分查找函数
printf("index = %d\n", index); // 打印结果索引
return 0;
}
2
//递归二分查找
int BiSearch(int data,int *p,int min,int max)
{
int mid = (min + max)/2;
if(data < p[min]||data >p[max])
return -1;
else if(data == p[mid])
return mid;
else if(data > p[mid])
BiSearch(data,p,mid+1,max);//mid已经判断过,所以要排除
else if(data < p[mid])
BiSearch(data,p,min,mid-1);
}
将一个字符串中的非数字字符删除,构成一个新字符串。然后将该字符串中的数字字符转成一个十进制整数,之后输出。例:原字符串为 a1b23c4def,则新字符串为 1234,转成整数后是整数 1234.
#include<stdio.h>
void main(){
char st[80];
int i,j=0;
gets(st);
for(i=0;st[i];i++){
if(st[i]>='0'&&st[i]<='9'){
st[j++]=st[i];
}
}
st[j]='\0';//有串必有'\0'
puts(st);
}