C語言作為嵌入式Linux開發的必備工具,作為嵌入式Linux開發的基礎語言,那么在面試嵌入式工程師時C語言定是面試中的重中之重 ,作為一名大三的老學長,不得不為找作業做必要準備,每天做一道C語言面試題,為面試打基礎,
2020.09.04
題目描述
輸入一個int型的正整數,計算出該int型資料在記憶體中存盤時1的個數,
輸入描述:
輸入一個整數(int型別)
輸出描述:
這個數轉換成2進制后,輸出1的個數
示例1
輸入
5
輸出
2
題目決議:
一般的思路可能是先將這個整數轉換為二進制數,將轉換后的每一位存放在陣列中,然后通過這個陣列統計1的個數,其實這是下下策,耗費記憶體同時遍歷陣列也消耗時間,那么我們可以換一種思路,通過位運算來實作統計1的個數,可以大大提高效率,
#include <stdio.h>
int func(x)
{
int countx = 0;
while(x)
{
countx ++;
x = x&(x-1);
}
return countx;
}
int main()
{
int data;
scanf("%d",&data);
printf("%d", func(data));
}
2020.09.05
題目描述:
輸入一個整數,將這個整數以字串的形式逆序輸出
程式不考慮負數的情況,若數字含有0,則逆序形式也含有0,如輸入為100,則輸出為001
輸入描述:
輸入一個int整數
輸出描述:
將這個整數以字串的形式逆序輸出
示例1:
輸入
1516000
輸出
0006151
題目決議:
一開始拿到題目的思路是通過sprintf函式將整數轉換成字串并存放在陣列str1中,然后通過回圈來實作交換,但是實際測驗時發現只能通過50%,具體什么原因我也不知道,
#include<stdio.h>
#include<string.h>
int main()
{
int n,i,size;
char str1[100],temp;
scanf("%d",&n);
sprintf(str1,"%d",n);
size=strlen(str1);
for(i=0;i<=(size/2);i++){
temp=str1[i];
str1[i]=str1[size-i-1];
str1[size-i-1]=temp;
}
printf("%s\n",str1);
}
去問了一下群友,才發現太馬虎大意了,這個程式對于只有奇數個字符時并沒有影響,但是對于偶數個字符時就會出錯,原因就是在回圈結束的判斷條件應該是小于而不是小于等于,
不過換一種思路就很簡單,通過對整個整數求余數得出最低位然后輸出不妨為一個很好的方法,10行代碼就能夠搞定,
#include<stdio.h>
int main()
{
int n;
scanf("%d",&n);
for(;n>0;){
printf("%d",n%10);
n=n/10;
}
}
2020.09.06
題目描述:
將一個字串str的內容顛倒過來,并輸出,str的長度不超過100個字符, 如:輸入“I am a student”,輸出“tneduts a ma I”,
輸入引數:
inputString:輸入的字串
回傳值:
輸出轉換好的逆序字串
輸入描述:
輸入一個字串,可以有空格
輸出描述:
輸出逆序的字串
示例1
輸入
復制
I am a student
輸出
復制
tneduts a ma I
題目決議:
#include<stdio.h>
#include<string.h>
int main()
{
int i,size;
char str1[100],temp;
gets(str1);
size=strlen(str1);
for(i=0;i<(size/2);i++){
temp=str1[i];
str1[i]=str1[size-i-1];
str1[size-i-1]=temp;
}
printf("%s\n",str1);
}
2020.09.07
題目描述
公元前五世紀,我國古代數學家張丘建在《算經》一書中提出了“百雞問題”:雞翁一值錢五,雞母一值錢三,雞雛三值錢一,百錢買百雞,問雞翁、雞母、雞雛各幾何?
輸入描述:
輸入任何一個整數,即可運行程式,
示例1
輸入
1
輸出
0 25 75
4 18 78
8 11 81
12 4 84
題目決議:
#include<stdio.h>
#include<string.h>
int main()
{
int a,b,n;
while(scanf("%d",&n)!=EOF)
{
for(a=0;a<20;a++)
{
for(b=0;b<34;b++)
{
if(((a*5+b*3+(100-a-b)/3)==100)&&(100-a-b)%3==0)
printf("%d %d %d\n",a,b,100-a-b);
}
}
}
}
2020.09.08
題目描述:
功能:等引數列 2,5,8,11,14,,,,
輸入描述:
輸入一個正整數,
輸出描述:
輸出一個相加后的整數,
示例1
輸入
2
輸出
7
題目決議:
#include<stdio.h>
int main()
{
int a0,q,n,sum;
a0=2;
q=3;
while(scanf("%d",&n)!=EOF)
{
sum=n*a0+(n*(n-1)*q/2);
printf("%d\n",sum);
}
}
2020.09.09
題目描述:
寫出一個程式,接受一個字串,然后輸出該字串反轉后的字串,(字串長度不超過1000)
輸入描述:
輸入N個字符
輸出描述:
輸出該字串反轉后的字串
示例:
輸入:abcd
輸出:dcba
題目決議:
看到題目后,這應該是一個C語言中比較基礎的題目了,常規的方法就是將一個字串給分成兩半,對稱位置進行交換,然后再正序輸出,題目只是讓逆序輸出字串,并沒有規定方法那么我們在輸出時直接通過for回圈逆序輸出不就可以了嘛!那么代碼就可以簡化為下面的了嘛!
#include<stdio.h>
#include<string.h>
int main()
{
char str[1000];
scanf("%s",str);
int len=strlen(str);
for(int i=len-1;i>=0;i--)
{
printf("%c",str[i]);
}
return 0;
}
2020.09.10
題目描述:
正整數A和正整數B 的最小公倍數是指 能被A和B整除的最小的正整數值,設計一個演算法,求輸入A和B的最小公倍數,
輸入描述:
輸入兩個正整數A和B,
輸出描述:
輸出A和B的最小公倍數,
題目決議:
本題目是求最小公倍數,而最小公倍數等于兩個數相乘除以兩個數的最大公約數,實際上就轉換為了求最大公約數的問題了,我們可以通過輾轉相除法來求最大公約數,
#include "stdio.h"
t gcd(int a, int b)//輾轉相除法求最大公約數
{
while(a%b){
int tmp=a;
a=b;
b=tmp%b;
}
return b;
}
int main()
{
int a, b;
scanf("%d %d",&a,&b);
printf("%d",a*b/gcd(a,b));
return 0;
}
不積小流無以成江河,不積跬步無以至千里,而我想要成為萬里羊,就必須堅持學習來獲取更多知識,用知識來改變命運,用博客見證成長,用行動證明我在努力,
如果我的博客對你有幫助、如果你喜歡我的博客內容,記得“點贊” “評論” “收藏”一鍵三連哦!聽說點贊的人運氣不會太差,每一天都會元氣滿滿呦!如果實在要白嫖的話,那祝你開心每一天,歡迎常來我博客看看,
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/184453.html
標籤:java
上一篇:推薦4款個人珍藏的IDEA插件!幫你寫出不那么差的代碼
下一篇:國行 iPhone 12/Pro/Max雙卡模式支持5G網路;支付寶推出「晚點付」功能;MySQL 8.0.22 GA|極客頭條


