2024-5-22【考试中常见的典型程序设计题目】【】

int i=1,j=1,t=1;

while(1.0/t >= 1e-4)

{

e+=1.0/t;

t*=j ;

j++;

}

printf (“%lf\n”,e);

}

4. 九九乘法表

#include <stdio.h>

int main() {

int i,j; // i, j控制行或列

for(i=1;i<=9;i++) {

for(j=1;j<=i;j++)

// %-5d 控制宽度为5个字符,且左对齐

printf(“%d*%d=%-5d”, i, j, i*j);

printf(“\n”);

}

return 0;

}

6.break语句 continue语句

7.求x、y的最大公约数和最小公倍数

#include <stdio.h>

int zhuida(int a,int b){

int temp;

if(a<b){//保证a>b

temp=a;

a=b;

b=temp;

}

while(b!=0){//循环求两数的余数,直到余数为0

temp=a%b;

a=b;

b=temp;

}

return a;//返回最大公约数

}

int zhuixiao(int a,int b){

int zhuida(int a,int b);

int temp;

temp=zhuida(a,b);

return (a*b/temp);//返回最小公倍数

}

int main() {

int x,y;

int div,mul;

scanf(“%d %d”,&x,&y);

div=zhuida(x,y);//最大公约数

mul=zhuixiao(x,y);//最小公倍数

printf(“%d %d”,div,mul);

return 0;

}

//递归辗转相除求最大公约数

int gcd(int a,int b){

return a%b ? b : gcd(b,a%b);

}

8.有两个红球、三个黄球、四个白球,任意取五个球,其中必须有一个黄球,编程输出所有可能的方案。

#include<stdio.h>

#include<math.h>

int main(){

int red=2,yellow=3,white=4;

for(int i=0;i<=red;i++){

for(int j=1;j<=yellow;j++){

for(int k=0;k<=white;k++){

if(i+j+k==5){

printf(“red=%d yellow=%d white=%d\n”,i,j,k);

}

}

}

}

return 0;

}

(四)数组

1.从小到大排序:冒泡法排序、选择法排序

//冒泡排序

void b_sort(int a[],int n){

int temp;

for(int i=0;i<n-1;i++){

for(int j==0;j<n-i-1;j++){

if(a[j]<a[j+1]){

temp=a[j];

a[j]=a[j+1];

a[j+1]=temp;

}

}

}

}

//选择排序

void s_sort(int a[],int n){

int temp;

for(int i=0;i<n-1;i++){

int min=i;

for(int j=i+1;j<n;j++){

if(a[j]<a[min]){

min=j;

}

}

if(min!=i){

temp=a[min];

a[min]=a[i];

a[i]=temp;

}

}

}

2.斐波那契数列前20项

#include<stdio.h>

int main()

{

int n,a[100];

a[0]=1;

a[1]=1;

scanf(“%d”,&n);

for(int i=2;i<n;i++){

a[i]=a[i-1]+a[i-2];//递推公式

}

for(int i=0;i<n;i++){

printf("%d ",a[i]);//输出

if(i%5==0&&i!=0){//换行

printf(“\n”);

}

}

return 0;

}

3.求一维数组元素的和 、平均数 、 最大值(及其下标)

#include<stdio.h>

int main(){

int a[10]={1,2,3,4,5,6,7,8,9,10};

int sum=0;

double average;

int max=0,maxnum=a[0];//max最大的下标;maxnum最大的值

for(int i=0;i<10;i++){

sum+=a[i];

if(a[i]>maxnum){

maxnum=a[i];

max=i;

}

}

average=sum*1.0/10;

printf(“sum=%d average=%lf max=%d maxnum=%d”,sum,average,max,maxnum);

return 0;

}

4.在一个有序数组中插入一个数仍然有序

#include <stdio.h>

void insert(int a[], int n, int x)

{

int i;

for (i = n - 1; i >= 0; i–) {

if (a[i]>x) {

a[i+1]=a[i]; // 当比较的数比x大时,将其后移

} else {

break; // 确定出x要插入的位置

}

}

a[i+1]=x; // 将x插入到数组中

}

int main(void)

{

int n = 8; // 初始数组大小为8

int x = 5; // 要插入的数为5

int A[20] = {1, 2, 3, 4, 6, 7, 8, 9};

insert(A, n, x);

for (int i = 0; i < n + 1; i++) {

printf("%d ", A[i]);

}

return 0;

}

5. 数组的逆序存放

void reverse(int p[], int n)

{

int i, j, temp;

for(i=0,j=n-1; i<j; i++,j–)

{

temp = p[i];

p[i] = p[j];

p[j] = temp;

}

}

6. 求二维数组的转至矩阵、每一行的最大值、每一行的和、对角线元素之和

//用的是五阶矩阵

void zhuanzhihs(){//转置函数

int temp;

for(int i=0;i<5;i++){

for(int j=0;j<5;j++){

if(j>i){

temp=((p+i)+j);

((p+i)+j)=((p+j)+i);

((p+j)+i)=temp;

}

}

}

}

void hangmax(){//每一行最大值

for(int i=0;i<5;i++){

int max=arr[i][0];

for(int j=0;j<5;j++){

if(arr[i][j]>max){

max=arr[i][j];

}

}

printf(“max=%d\n”,max);

}

}

void hangsum(){//每行求和

for(int i=0;i<5;i++){

int sum=0;

for(int j=0;j<5;j++){

sum+=arr[i][j];

}

printf(“sum=%d\n”,sum);

}

}

void duijiaosum(){//对角线求和

int sum=0;

for(i=0;i<;i++)

{

sum+=a[i][i];

sum+=a[i][2-i];

}

sum-=a[3][3];

printf(“%d”,sum);

}

7. 杨辉三角

#include <stdio.h>

#define N 20

int main()

{

int i, j, k, n=0, a[N][N];

printf(“请输入要打印的行数:”);

scanf(“%d”,&n);

printf(“%d行杨辉三角如下:\n”,n);

for(i=1;i<=n;i++)

a[i][1] = a[i][i] = 1;

//两边的数令它为1,因为现在循环从1开始,就认为a[i][1]为第一个数

for(i=3;i<=n;i++)

for(j=2;j<=i-1;j++)

//i=3和j=2是关键点

a[i][j]=a[i-1][j-1]+a[i-1][j]; //除两边的数外都等于上两顶数之和

for(i=1;i<=n;i++){

for(k=1;k<=n-i;k++)

printf(" "); //这一行主要是在输出数之前打上空格占位,让输出的数更美观

for(j=1;j<=i;j++) //j<=i的原因是不输出其它的数,只输出我们想要的数

printf(“%5d”,a[i][j]);

printf(“\n”); //当一行输出完以后换行继续下一行的输出

}

printf(“\n”);

}

8. 自己编程实现 :字符串的拷贝,连接,比较、统计字符个数,

int Strlen(char a[]){//长度

int b,i,len=0;

for(i=0;a[i]!=‘\0’;i++)

len++;

return len;

}

void strcat1(char a[],char b[]){//接长

int lena,lenb,i,j;

lenb=Strlen(b);

lena=Strlen(a);

for(i=lena,j=0;i<lena+lenb;i++,j++)

a[i]=b[j];

}

void copy(char a[],char b[])//strcpy

{

int i;

for(i=0;a[i]!=‘\0’;i++)

b[i]=a[i];

}

int strcmp1(char str1[],char str2[])//strcmp

{

int i=0;

while((str1[i] == str2[i]) && (str1[i] != ‘\0’))

//自定义实现strcmp();打印不同字符的差值

i++;

return str1[i]-str2[i];

}

大写小写互换、大小写字母的个数 字符串中某一字母(例如’a’)的个数

#include <stdio.h>

int main()

{

char a[100];

int i,cnt=0,cnt1=0,cnt2=0;

gets(a);

for(i=0;a[i]!=‘\0’;i++){

if(a[i]==‘a’){

cnt++;

}

if(a[i]>=‘a’&&a[i]<=‘z’){

a[i]-=32;

cnt1++;

}

else if(a[i]>=‘A’&&a[i]<=‘Z’){

a[i]+=32;

cnt2++;

}

}

puts(a);

printf(“a的个数:%d”,cnt);

printf(“小写个数:%d 大写个数:%d\n”,cnt1,cnt2);

return 0;

}

9. 判断字符串是否回文

#include<stdio.h>

#include<string.h>

int is_back_content(char str[]){

int i=0,j,len,n;

len = strlen(str);

j = len - 1;

n = len/2;

while(i<=n){

if(str[i]!= str[j])

return -1;

j–;

i++;

}

return 1;

}

int main(){

char str[100];

gets(str);

if(is_back_content(str)==1){

printf(“是回文”);

}else{

printf(“不是回文”);

}

}

(五)函数

1.所有前面学过的程序都能转换成函数调用的形式

main函数中输入、调用函数、输出。自定义函数完成相应的功能。

2.函数与一维数组:数组名作为函数参数。(例如一维数组的排序,查找某个数,求最大最小值,求和求平均值,字符数组的比较,连接,统计字符个数,查找某个字符)

//数组部分已经使用,不重复提供

(六)指针

1.利用指针,实现两个数交换内容(函数调用的方法)

void swap(int *a,int *b){

int temp;

temp=*a;

*a=*b;

*b=temp;

}

总结

虽然我个人也经常自嘲,十年之后要去成为外卖专员,但实际上依靠自身的努力,是能够减少三十五岁之后的焦虑的,毕竟好的架构师并不多。

架构师,是我们大部分技术人的职业目标,一名好的架构师来源于机遇(公司)、个人努力(吃得苦、肯钻研)、天分(真的热爱)的三者协作的结果,实践+机遇+努力才能助你成为优秀的架构师。

如果你也想成为一名好的架构师,那或许这份Java成长笔记你需要阅读阅读,希望能够对你的职业发展有所帮助。

image

找小编(vip1024c)领取
len/2;

while(i<=n){

if(str[i]!= str[j])

return -1;

j–;

i++;

}

return 1;

}

int main(){

char str[100];

gets(str);

if(is_back_content(str)==1){

printf(“是回文”);

}else{

printf(“不是回文”);

}

}

(五)函数

1.所有前面学过的程序都能转换成函数调用的形式

main函数中输入、调用函数、输出。自定义函数完成相应的功能。

2.函数与一维数组:数组名作为函数参数。(例如一维数组的排序,查找某个数,求最大最小值,求和求平均值,字符数组的比较,连接,统计字符个数,查找某个字符)

//数组部分已经使用,不重复提供

(六)指针

1.利用指针,实现两个数交换内容(函数调用的方法)

void swap(int *a,int *b){

int temp;

temp=*a;

*a=*b;

*b=temp;

}

总结

虽然我个人也经常自嘲,十年之后要去成为外卖专员,但实际上依靠自身的努力,是能够减少三十五岁之后的焦虑的,毕竟好的架构师并不多。

架构师,是我们大部分技术人的职业目标,一名好的架构师来源于机遇(公司)、个人努力(吃得苦、肯钻研)、天分(真的热爱)的三者协作的结果,实践+机遇+努力才能助你成为优秀的架构师。

如果你也想成为一名好的架构师,那或许这份Java成长笔记你需要阅读阅读,希望能够对你的职业发展有所帮助。

[外链图片转存中…(img-aooiM1pb-1721628277802)]

找小编(vip1024c)领取

  • 2
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值