2024-5-22【考试中常见的典型程序设计题目】【】,java内存模型面试题

求n的阶乘

#include<stdio.h>

int main(){

int n,t=1;

scanf(“%d”,&n);

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

t*=i;

}

printf(“%d”,t);

}

3. 输出水仙花数、完数、质数

#include <stdio.h>

//水仙花数

int main()

{

int a,b,c,n;

printf(“3位数以内的水仙花数为:\n”);

for (n=100;n<=999;n++)

{

a=n/100;

b=n/10%10;

c=n%100%10;

if(n==aaa+bbb+ccc) printf(“%d\t”,n);

}

printf(“\n”);

return 0;

}

#include<stdio.h>

int main(){

int sum;

//1000以内的完数

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

int sum=0;

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

int t=i%j;

if(t==0)

sum+=j;

}

if(sum==i)

printf(“%d\n”,i);

}

return 0;

}

#include<stdio.h>

#include<math.h>

//判断质数

int main(){

int n,flag=0;

scanf(“%d”,&n);

if(n<=1){

flag=1;

}

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

if(n%i==0){

flag=1;

break;

}

}

if(flag){

printf(“%d不是质数”,n);

}else{

printf(“%d是质数”,n);

}

return 0;

}

4.求复杂的前n项和。

如:求pi/4

#include<stdio.h>

#include<math.h>

int main()

{

double term;

必看视频!获取2024年最新Java开发全套学习资料

double sum = 0;

do

{

int i = 0;

term = 1.0 / (2 * i + 1);

if (i % 2 == 0)

sum += term;

else

sum -= term;

} while (term < 1e-4);

printf(“%.6f”, sum);// pi/4

return 0;

}

求e(循环直至项值于10-4。

e=1+1/1!+1/2!+1/3!+1/4!+1/5!+…+1/n! )

/求e的值。e≈1+1/1!+1/2!+1/3!+…,直到最后一项的值小于10的-4次方为止。/

#include <stdio.h>

int main(void)

{

double e=0.0;

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;

}

最后

做任何事情都要用心,要非常关注细节。看起来不起眼的、繁琐的工作做透了会有意想不到的价值。
当然要想成为一个技术大牛也需要一定的思想格局,思想决定未来你要往哪个方向去走, 建议多看一些人生规划方面的书籍,多学习名人的思想格局,未来你的路会走的更远。

更多的技术点思维导图我已经做了一个整理,涵盖了当下互联网最流行99%的技术点,在这里我将这份导图分享出来,以及为金九银十准备的一整套面试体系,上到集合,下到分布式微服务

)//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;

}

最后

做任何事情都要用心,要非常关注细节。看起来不起眼的、繁琐的工作做透了会有意想不到的价值。
当然要想成为一个技术大牛也需要一定的思想格局,思想决定未来你要往哪个方向去走, 建议多看一些人生规划方面的书籍,多学习名人的思想格局,未来你的路会走的更远。

更多的技术点思维导图我已经做了一个整理,涵盖了当下互联网最流行99%的技术点,在这里我将这份导图分享出来,以及为金九银十准备的一整套面试体系,上到集合,下到分布式微服务

[外链图片转存中…(img-mCKx5JAq-1720154555761)]

[外链图片转存中…(img-ucHKpbdd-1720154555762)]

[外链图片转存中…(img-fLQRi7wR-1720154555762)]

[外链图片转存中…(img-T6VoWlKd-1720154555762)]

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值