c语言编程问题
1、输入有范围,两个变量输入都需要验证,方法变量处置范围以外,循环判断输入。
2、天数循环计数,日期0~6周期自增。用变量累加计数结果。
下面是演示代码:
#include<stdio.h>
int main()
{
int i,j,a=7,n=366,cnt=0;
while(a<0 || a>6)
printf("请输入a的值(0~6):"),scanf("%d",&a);
while(n<0 || n>365)
printf("请输入n的值(0~365):"),scanf("%d",&n);
for(i=0,j=a;i<n+1;i++,j++)
{
if(j==4) cnt++;
if(j==6) j=-1;
}
printf("上机次数%d次 ",cnt);
return 0;
}
2. C语言编程问题,急求答案
使用冒泡的算法,将p后面的n-p-1个元素向前交换p+1次:
#include "stdafx.h"
#include <iostream>
using namespace std;
#define N 1000
int main()
{
int n, p;
int num[N];
cout << "请输入n值和p值:" << endl;
cin >> n >> p;
cout << "请输入" << n << "个数:" << endl;
for (int i = 0; i < n; i++)
cin >> num[i];
for (int i = 0; i <= p; i++)
{
for (int j = 0; j < n - p - 1; j++)
{
int temp = num[p+j-i];
num[p + j-i] = num[p + j + 1-i];
num[p + j + 1-i] = temp;
}
}
for (int i = 0; i < n; i++)
cout << num[i] << " ";
cout << endl;
system("pause");
return 0;
}
3. 关于c语言编程问题!
long
fun(int
n)//返回值是长整型,输入为整型
{
int
i;long
s;//此句应该给s赋初值1,改为long
s=1;
for(i=1;i<=n;i++)//n控制循环次数
s*=i;//s=s*i完成1到n的累乘,即
s=1*2*3*4....*n
return(s);
}
main()
{int
k,n;
long
s;
scanf("%d",&n);//键盘输入n的值
s=0;
for(k=0;k<=n;k++)
s+=fun(k);//s=s+fun(k),完成累加功能,即s=f(0)+f(1)+f(2)....+f(n),f(x)是x的阶乘
printf("%d\n",s);
}
如果输入n=5的话,最后结果为s=0!+1!+2!+3!+4!+5!不知道你明白了没
a-=2是
a=a-2的简写变量运算符=常量相当于变量=变量运算符常量
4. C语言编程问题
#include<stdio.h>
#include<string.h>
#include<ctype.h>
int main()
{ char s[1000],s1[100],*p,*q,*q1,*t,s2[100];
int n;
gets(s);
q=s+strlen(s);
while(1)
{ gets(s1);
if(strcmp(s1,"#")==0)break;
for(q=s+strlen(s)-1; isalpha(*q); q--)
if(islower(*q))*q-=32;
q=s+strlen(s);
for(p=s1; isalpha(*p); p++);
strcpy(q,p);
}
puts(s);
return 0;
}
5. c语言编程问题
#include<iostream>
usingnamespacestd;
constPi=3.1415926;
typedefstructpoint{
doublex,y;
}point;
classShape{
public:
virtualdoublegetArea()const=0;
};
classRectangle:publicShape{
doublelength,width;
pointx,y;
public:
Rectangle(doublelen,doublewid):length(len),width(wid){}
Rectangle(pointp1,pointp2){
length=p2.x-p1.x;
width=p2.y-p1.y;
}
doublegetArea()const{returnlength*width;}
};
classCircle:publicShape{
pointcenter;
doubleradius;
public:
Circle(doubler):radius(r){}
Circle(pointcen,doubler){
center=cen;
//center.x=cen.x;
//center.y=cen.y;
radius=r;
}
doublegetArea()const{returnPi*radius*radius;}
};
intmain(){
Shape*s[4];
doublelen=4,wid=5,r=1.0;
pointpos0={1,1},pos1={0,0},pos2={5,6};
s[0]=newCircle(pos0,r);
s[1]=newRectangle(pos1,pos2);
s[2]=newRectangle(len,wid);
s[3]=newCircle(r);
for(inti=0;i<4;++i)
cout<<s[i]->getArea()<<endl;
return0;
}
6. C语言编程问题
程序运行时先进入第一个switch语句,即switch(a>0),你可能认为它是值是2,所以直接执行default了吧?其实它的值不是2,而是1,因为a>0是一个表达式,它返回的是真或假的值,因为a=2,是大于0的,所以这个式子成立,所以返回的值为真,在C中"真"用1表示,所以当a=2时switch(a>2)就等价于switch(1),执行第二个switch语句,即执行switch(b<0)因为b=7,是不小于0的,返回值为假(C中用0表示),所以这个语句等价于switch(0),而这个switch里没有case
0,所以跳出这个switch,不过要注意switch(a>0)中的case
1:中是一个switch语句,而这个语句后面是没有break的,所以它要再执行
case
0:
switch(c==5)
{
case
0: printf("*");
break;
case
1: printf("#");
break;
case
2: printf("$");
break;
}
这个部分,c==5的返回值是1,所以输出一个"#",而case
0:switch(c==0)这个语句后面还是没有break,所以就要再执行default,即输出一个"&",两次输出后显示在屏幕上的当然就是"#&"了