1.输入一个数字n(1<=n<=9) 输出九九乘法表,具体来说,是n * n的乘法表。 第i行第j列输出i*j=ij。 同一行的若干列之间,用制表符’\t’隔开。 每一行的最后没有制表符。
#include<stdio.h>
int i,j,n;
int main(){
printf("请输入数字n:");
scanf("%d",&n);
for(i=1;i<=n;++i){
for(j=1;j<=n;++j){
printf("%d*%d=%d\t",i,j,i*j);
}
printf("\n");
}
return 0;
}
2.输入一个n,输出n层图形,见下(图为n=4的情况): * ** *** ****
#include<stdio.h>
int i,j,n;
int main(){
scanf("%d",&n);
for(i=1;i<=n;++i){
for(j=1;j<=i;++j){
printf("*");
}
printf("\n");
}
return 0;
}
3.输入一个数n,输出n层图形,见下(图为n=4的情况) * *** ***** *******
#include<stdio.h>
int i,j,n;
int main(){
scanf("%d",&n);
for(i=1;i<=n;++i){
for(j=1;j<=2*i-1;++j){
printf("*");
}
printf("\n");
}
return 0;
}
4.输入一个正整数n(1 <= n <= 100) 输出一个由组成的塔。 具体来说,输出共n行,第i行(从1开始数)有2i-1个。 在第i行的*前面,有n-i个空格。 每行行尾是没有空格的。
#include<stdio.h>
int i,j,k,n;
int main(){
scanf("%d",&n);
for(i=1;i<=n;i++){
for(j=1;j<=n-i;j++){
printf(" ");
}
for(k=1;k<=2*i-1;k++){
printf("*");
}
printf("\n");
}
return 0;
}
5.如果一个数字的十进制表示中有7,我们就认为他是幸运数字。 输入两个整数L, R(1≤L≤R≤100000) 输出所有满足L≤n≤R的幸运数字n。 从小到大输出所有幸运数字,一行一个。 特别注意如果区间内没有任何一个幸运数字,输出None
#include<stdio.h>
int main(){
int m,n,num=0,i,j;
scanf("%d %d",&m,&n);
for(i=m;i<=n;i++){
j=i;
while(j){
if(j%10==7){
printf("%d\n",i);
num++;
}
j=j/10;
}
if(num==0)
printf("NOME");
return 0;
}
}
6.请你帮小瓜将正整数n分解质因数,并从小到大输出所有的质因数(如果一个质因数出现多次,则输出多次)。
#include<stdio.h>
int n,i;
int main(){
scanf("%d",&n);
for(i=2;i<=n;++i){
while(n!=i){
if(n%i==0){
printf("%d*",i);
n=n/i;
}else
break;
}
}
printf("%d",n);
return 0;
}
7.夏天到了,超市里摆满了各种各样的应季水果。现在知道:西瓜的价钱是每斤 1.2 元;桃子的价格是每斤 3.5 元;葡萄的价格是每斤 4.5 元;苹果的价钱是每斤 5 元。现在分别给出上述四种所购买的斤数(均不超过 20),请你编写程序帮助售货员阿姨计算并依次输出顾客购买四种水果需要的钱数及总钱数。
##因为double类型针对浮点型计算的话有精度误差,因为我们钱最小为到分,因此可以计算出来的钱保留两位小数,然后在小数的后面再加上精度误差导致的0.001来消除误差!!!!
#include<stdio.h>
double a,b,c,d;
int main(){
scanf("%lf %lf %lf %lf",&a,&b,&c,&d);
printf("%.2lf\t",1.2*a+0.001);
printf("%.2lf\t",3.5*b+0.001);
printf("%.2lf\t",4.5*c+0.001);
printf("%.2lf\t",5*d+0.001);
printf("%.2lf\n",1.2*a+3.5*b+4.5*c+5*d);
return 0;
}
8.如果一个整数是另一个整数的平方,我们就称之为完全平方数。请你帮小瓜判断一个数是否为完全平方数?
#include<stdio.h>
int n,i,j=0;
int main(){
scanf("%d",&n);
for(i=0;i<n;i++){
if(i*i==n){
printf("完全平方数");
++j;
break;
}
}
if(j==0)
printf("NO");
return 0;
}
9.小瓜非常喜欢吃龙虾,一个阳光明媚的星期天早晨,他来到海鲜市场采购龙虾。海鲜市场里一共有n只龙虾,每只龙虾重t克。由于小瓜非常挑剔,他只吃重大于等于m克的龙虾,于是他打算把所有重大于等于m克的龙虾买回家。请你帮小瓜算一下他一共将会买多少克龙虾。
#include<stdio.h>
long long i,n,m,t,sum=0;
int main(){
scanf("%lld %lld",&n,&m);
for(i=0;i<n;++i){
scanf("%lld",&t);
if(t>=m)
sum=t+sum;
}
printf("%lld",sum);
return 0;
}
10.输入a和b。输出 a位或b 和 a位与b 的差。
#include<stdio.h>
int a,b;
int main(){
scanf("%d %d",&a,&b);
printf("%d",(a|b)-(a&b));
}
11.请你把一个整数n转化为二进制并从低位到高位输出。
#include<stdio.h>
int i,j;
int main(){
scanf("%d",&i);
while(i){
j=i%2;
i=i/2;
printf("%d",j);
}
return 0;
}
12.给出三个整数a,b,c,请找出最小的进制K(2<=K<=16)使得a*b=c在K进制下成立。 比如a=11,b=10,c=110。那么当K=2的时候 (11)2 ∗ (10)2 = (110)2 成立,当K=10的时候 (11)10 ∗ (10)10 = (110)10 也成立。
没解决
13.请你把一个整数n转化为二进制并从高位到低位输出。
#include <stdio.h>
#include <stdlib.h>
int main() {
int a;
char str[256];
scanf("%d",&a);
itoa(a,str,2);
printf("%s\n",str);
return 0;
}
14.输入一个十进制整数n,和一个进制b,输出b进制下的n。
0 <= n <= 10^9
2 <= b <= 16
#include<stdio.h>
int main(){
int n,b,t,i=0;
char s[17]="0123456789ABCDEF";
char c[32]={0};
scanf("%d%d",&n,&b);
do{
t=n%b;
c[i]=s[t];
++i;
n=n/b;
}
while(n!=0);
int j;
for(j=0;j<i/2;++j){
char t=c[j];
c[j]=c[i-1-j];
c[i-1-j]=t;
}
printf("%s\n",c);
}
14.费马大定理
#include <stdio.h>
#include <stdbool.h>
int main() {
int N;
scanf("%d",&N);
bool flag=false;
int o,r,s,t;
for(o=2;o<=N;o++)
for(r=2;r<N-2;r++)
for(s=r+1;s<N-1;s++)
for(t=s+1;t<N;t++){
if(o*o*o==r*r*r+s*s*s+t*t*t){
printf("(%d,%d,%d,%d)\n",o,r,s,t);
flag=true;
}
}
if(flag==false)
printf("OMG");
return 0;
}
15.输入一个长度为n(1 <= n <= 100000)数组,倒序输出他。数组中的元素ai满足(1≤ai≤100000)。
#include <stdio.h>
int main() {
int n;
scanf("%d",&n);
int a[n];
int i;
for(i=0;i<n;++i){
scanf("%d",&a[i]);
}
for(i=n;i>=0;--i){
printf("%d\n",a[i]);
}
}
16.地上有n个金币,编号1到n,按照编号从小到大顺时摆成一个圈。每一个金币有一价值p [i] (1<=i<=n)。现在大Noder和小Noder开始收金币,他们每个人都要收集编号连续的金币。大Noder从1号开始顺时针收集,小Noder从n号开始逆时针收集。直到把所有的金币收集完。但是他们想要得到相同多的金币,请问他们能实现吗?
#include <stdio.h>
int main() {
int n,a[],i,j;
int sum1=0,sum2=0;
scanf("%d",&n);
for(i=0;i<n;i++)
{
scanf("%d",&a[i]);
}
for(i=0;i<n;i++)
{
sum1+=a[i];
sum2=0;
for(j=i+1;j<n;j++)
{
sum2+=a[j];
}
if(sum1==sum2)
{
printf("YES");
break;
}
}
if(sum2!=sum1)
printf("NO");
return 0;
}
17.中国人办喜事讲究好事成双,现在定义“好事成双”对:如果两个数字a,b,只要a=2b或者b=2a成立,那么就说这两个数字是“好事成双”对。现在给出一个数组,请计算一下里面有多少“好事成双”对。
#include<stdio.h>
int main(){
int a,b,c[1024],i,j,n,num=0;
scanf("%d",&n);
for(i=0;i<n;++i){
scanf("%d",&c[i]);
}
for(i=0;i<n;++i){
for(j=i+1;j<n;++j){
if(c[i]==2*c[j] || c[j]==2*c[i])
num++;
}
}
printf("%d",num);
}
18.Noder咖啡馆里面有N个座位,每天会有若干个顾客来店里面消费,会得到相应的服务。一个顾客占一个位置,顾客离开之后位置就会空出来。如果顾客来了之后没有位置,那么顾客就会直接离开,也就得不到服务。 现在已知座位数N,以及一天之内顾客来走的顺序,请统计一下有多少顾客没有得到服务。
##第一种方法
#include <stdio.h>
#include <stdbool.h> // bool true false
int main(){
int n;
scanf("%d",&n);
char s[100];
scanf("%s",s);
// 定义座位
char seats[n];
for(int i=0 ;i<n;++i){
seats[i] = 0;
}
int count = 0;// 为接收到服务的人数
for(int i=0;'\0'!=s[i];++i){
// 出
bool sitted = false;// 假设当前字母没有进入过
for(int j=0;j<n;++j){
if(s[i] == seats[j]){
seats[j] = 0;
sitted = true;
break;
}
}
if(sitted) continue;// 表示已经离开
// 入
bool hasEmpty = false;
for(int j=0;j<n;++j){
if(0 == seats[j]){
seats[j] = s[i];
hasEmpty = true;
break;
}
}
if(!hasEmpty){
++count;
++i;// 表示没有座位马上离开
}
}
printf("%d\n",count);
}
##第二种方法
#include <stdio.h>
#include <stdbool.h> // bool true false
int main(){
int n;
scanf("%d",&n);
char s[100];
scanf("%s",s);
// 定义座位
int seat_nums = n;// 当前有多少位置空着
// 定义记录表
int record[256] = {0};
int count = 0;// 未接收到服务的人数
for(int i=0;'\0'!=s[i];++i){
char c = s[i];
// 出
if(record[c] == 1){//表示那个字母已经坐到座位上了
record[c] = 0;
++seat_nums;
continue;
}else{// 入
if(seat_nums == 0){ // 没有座位
++count;
++i;
}else{
--seat_nums;
record[c] = 1;
}
}
}
printf("%d\n",count);
}
19.丢失的数字 给你m个1到n之间的整数,你能找出1到n中的哪些整数没有出现吗?
#include<stdio.h>
int main(){
int n,m,t,i;
int arr[n];
scanf("%d %d",&n,&m);
for(i=0;i<m;++i){
scanf("%d",&t);
arr[t-1]=1;
}
for(i=0;i<n;++i){
if(arr[i]==0){
printf("%d\n",i+1);
}
}
}
20.多出的数字 给你m个1到n之间的整数,你能找出1到n中的哪些整数出现了多次吗?
include <stdio.h>
int main() {
int a[100000];
int i,n,m,t;
scanf("%d%d",&n,&m);
for(i=0;i<m;i++)
{
scanf("%d",&t);
a[t]++;
}
for(i=1;i<=n;i++)
{
if(a[i]!=0&&a[i]>1)
printf("%d %d\n",i,a[i]);
}
}
21.字符替换 小瓜有一个包含数字和字母字符的字符串,他不希望别人知道其中的数字是多少,请你帮忙把字符串中的数字字符全部替换成*。
#include<stdio.h>
int main(){
char str[1000];
scanf("%s",str);
for(int i=0;'\0'!=str[i];++i){
if(str[i]>=48 && str[i]<=57){
str[i]='*';
}
}
printf("%s\n",str);
}
22.字典序 给你两个不同的字符串,如果第一个字符串的字典序小于第二个字符串,则输出YES,如果第一个字符串的字典序大于第二个字符串,则输出NO。
#include <stdio.h>
#include <string.h>
int main() {
int i;
char a[10000];
char b[10000];
scanf("%s",a);
scanf("%s",b);
i=strcmp(a,b);
if(i<0)
printf("YES");
else if(i>0)
printf("NO");
}
23.请你帮小瓜找一找某个字符在字符串中第一次出现的位置是多少。
#include <stdio.h>
int main() {
int i,n,flag=-1;
char c;
scanf("%d",&n);
char str[n+1];
scanf("%s",str);
scanf("%s",&c);
for(i=0;'\0'!=str[i];i++)
{
if(str[i]==c)
{
flag=i;
break;
}
}
printf("%d\n",flag);
}