求解一个C++问题,需要详细的解答,谢谢! C++求解,要详细解析,谢谢了。

作者&投稿:隐寇 (若有异议请与网页底部的电邮联系)
自己比较着看吧。
//#include "stdafx.h"//vc++6.0加上这一行.
#include "stdio.h"
void main(void){
int year,month,day,i,k,m[12]={31,28,31,30,31,30,31,31,30,31,30,31};
cout << "Type Year, Month & Day\n";
while(1){
cin >> year >> month >> day;
if(year>0){
if(!(year%100) || !(year%4) && year%100) m[1]++;
if(month>0 && month<13 && day>0 && day <=m[month-1])
break;
}
cout << "Error! redo...\n";
}
for(k=i=0,month--;i<month;i++)
k+=m[i];
cout << year << "年" << month+1 << "月" << day << "日是该年的第" << k+day << "天.\n";
}

#include <iostream>
#include <algorithm>
using namespace std;
struct Date
{
int month;
int day;
int year;
};
int main()
{
Date date;
int count_day = 0, i;
int month[12];
int month1[12] = { 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 };
int month2[12] = { 31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 };
bool leap;
cout << "please enter month day and year";
cin >> date.year >> date.month >> date.day;
if ((date.year % 4 == 0 && date.year % 100 != 0) || (date.year % 400 == 0))
{
leap = true;
copy_n(month1, 12, month);
}
else
{
leap = false;
copy_n(month2, 12, month);
}
for (i = 1; i < date.month; i++)
count_day = count_day + month[i - 1];
count_day = count_day + date.day;
cout << "该日是本年第" << count_day << "天" << endl;
return 0;
}

1、整个数组之间的赋值不能直接用一个等号这样完成。可以使用algorithm头文件里的copy_n从一个数组复制到另一个数组

2、count_day没有初始化为0

3、count_day没有加上日期的天数

4、month的第i个元素并不代表第i个月的天数,因为下标从0开始的。i-1才是该月份天数

5、因为没有第0月,所以i要从1开始

6、闰年判断方式有没有错我没检查。



#include <iostream>
using namespace std;
struct Date
{int month;
int day;
int year;
};
int main()
{
Date date;
int count_day,i;
int month[12];
int month1[12]={31,28,31,30,31,30,31,31,30,31,30,31};
int month2[12]={31,29,31,30,31,30,31,31,30,31,30,31};
bool leap;
cout <<"please enter month day and year\n";
cin>>date.year>>date.month>>date.day;
count_day=date.day; //起始天数
if ((date.year%4==0 && date.year%100!=0) || (date.year%400==0))
{
leap=true;
for(i=0;i<12;i++) //数组赋值
month[i]=month1[i];
}
else
{
leap=false;
for(i=0;i<12;i++) //数组赋值
month[i]=month2[i];
}
for(i=0;i<date.month-1;i++) //此处i从0开始变到。。。。
count_day=count_day+month[i];
cout<<"该日是本年第"<<count_day<<"天"<<endl;
return 0;
}

C++问题,求高手详细解答,谢谢。~

第一个问题:printf()函数是控制台(就是你的dos窗口,那个黑色的)输出函数
其中的含义:%d 十进制有符号整数 %u 十进制无符号整数 %f 浮点数 %s 字符串 %c 单个字符 %p 指针的值 %e 指数形式的浮点数 %x, %X 无符号以十六进制表示的整数 %0 无符号以八进制表示的整数 %g 自动选择合适的表示法

你的程序中printf("%d%8.6f",x,y); 第一个%d输出一个有符号整数就是后边对应的x的值到控制台上
紧接着输出%8.6f 即对应于y的值,这里%8.6f的意思是,首先输出一个浮点数,这个浮点数的格式是:8.6中的6代表有六个小数位(不足的用零补齐),8代表这个浮点数总共有8位(包括小数点),不足八位,在浮点数前边用空格补齐;

scanf函数跟printf正好相反是从控制台读取数据
getchar是从控制台读取一个字符

第二个问题:A选项:代表a乘b B选项:a与b按位取或, C选项:a和b按位取与 D选项是将a的八位向右移动四位

第三个问题:
#include
void main(){
FILE * fp;int a[10]={1,2,3},i,n;
fp=fopen("d1.dat","w");//以写的方式打开d1.dat文件
for(i=0;i<3;i++) fprintf(fp,"%d",a[i]);//将a【10】中的1、2、3写入d1.dat文件
fprintf(fp,"
");
fclose(fp);
fp=open("d1.dat","r");//以读的方式打开d1.dat文件
fscanf(fp,"%d",&n);//将d1.dat中的数据读入变量n中
fclose(fp);
printf("%d
",n);//将n的数据打印到控制台上 应该是123
}

//-------------------------------------
typedef vector > Mat;
Mat input();
Mat transpose(const Mat& a);
void print(const Mat& a);
//-------------------------------------
int main(){
print(transpose(input()));
}//------------------------------------
Mat input(){
ifstream in("a.txt");
int row, col;
in>>row>>col;
Mat a(row, vector(col));
for(int i=0; i<row; ++i)
for(int j=0; j<col; ++j)
in>>a[i][j];
return a;
}//------------------------------------
Mat transpose(const Mat& a){
Mat b(a[0].size(), vector(a.size()));
for(int i=0; i<a.size(); ++i)
for(int j=0; j<a[0].size(); ++j)
b[j][i] = a[i][j];
return b;
}//------------------------------------
void print(const Mat& a){
for(int i=0; i<a.size(); ++i){
for(int j=0; j<a[0].size(); ++j)
cout<<setw(4)<<a[i][j];
cout<<endl;
}
问题一:有关程序中的全局数据说法正确的是:D
Mat是类型,a,row是局部数据
问题二:在函数void input()中,当i=0,j=4时,输入a[0]的值是:C
这是代表当输入第0行第四列数据时输入完成的数12,3,6,78
问题三:在函数void input()中,当i=1,j=4时,输入a[1]的值是:D
这是代表当输入第一行第四列数据时(包括第0行的五个数据)输入完成的数12 3 6 78 91 2 35 61 8
问题四:void transpose()中,当i=0,j=3时,输入b[0]的值是:A
当i=0,j=3时这时只转换b中的第0,1,2行中第0列的数据,因此b第0行中只有一个数据12
问题五:void transpose()中,当b[1]中有两个数据时,b[4]中有几个数据?B
当b中第一行中有两个数据,b中第四行中已经有1个数据,就是91
后面的问题好像题意不太清楚

一个C问题 请求解答 谢谢
答:十六进制数是由0、1、2、3、4、5、6、7、8、9、A、B、C、D、E、F任意组合构成的,其特点是逢十六进一。为了与其它的数制的数区别开来,我们在十六进制数的外面加括号,且在其右下方加注16,或者在其后标H。 十六进制数的基数是16,任何一个十六进制数亦可拆分成由各位数字与其对应的权的乘积的总和。其整数...

一个简单的c语言问题,求高手给出答案并解释
答:在16位编译器里 int的长度为2个字节,能表示最大整数为 + 2^15 -1 即为32767 该值在内存中二进制表示为 0111 1111 1111 1111 最高位的零为符号位表示整数 再加一后,想符号位进位其他位为零 即1000 0000 0000 0000 或16进制的0x8000 这个数如果用有符号整数表示,则需要除符号位外取反再...

关于2级C语言的几个问题(详细解答一下,谢谢!)
答:(1)选A char x='A'; 是定义一个变量x并赋值为字符A x=(x>'A'&&x<='Z')?(x+32):x; 这是个选择语句,括号里的x>'A'&&x<='Z'表示条件,意思就是在A到Z之间的字母,也就是所有大写字母,因为是 >'A'不是>=‘A',所以不包括A,当条件满足时就执行x=x+32,大写字母 +32就...

帮帮解一下下面这个C语言程序!需要详细过程,谢谢
答://缺#include语句 void fun(int *x,int y) //形参 x 是指针 ,y 是int数 { printf("%d%d",*x,*y); //输出 *x 的值 ,y不要加 x=3;y=4; // y不要加 } main(){int x=1,y=2;fun(&y,&x); //与函数声明 fun(int *x,int y) 不一致 ,x前面不用加& pri...

关于C语言的一个小问题,求大神们解答
答:从右往左算,若a=8,则 a+=a*=a/=a-6 //先算a-6 a+=a*=a/=2 //算a/=2,即a=a/2=8/2=4 a+=a*=4 //算a*=4,即a=a*4=4*4=16 a+=16 //算a+=16,即a=a+16=16+16=32 a=32

...帮忙解决一个学习中C语言的编程问题,在线等。会的加qq649800266_百度...
答:include<stdio.h> include<stdlib.h> int main(void){ int x;int c = 0;FILE* f1; //定义一个文件指针 f1=fopen("data.txt","w"); //在程序所在项目内建立一个空文件 if (f1==NULL) { //当f1对应的文件没有建立和打开时则退出运行 printf("不能够打开文件!\n");exit(1)...

请各位高手解决一个C语言问题
答:printf("x=%ld\n", x); 错误。x=45678*56789 = 2594007942 十六进制就是9A9D6B86,可以看出最高位是9大于8,实际上已经超出了4字节长整数的表示范围(最高位是符号位,最大的数小于十六进制80000000)。如果要输出则需要输出无符号长整型,用%lu来格式化:printf("x=%lu\n", x);...

C语言的一个概念性问题,我很难理解。希望C理解的深的给我详细解释解释...
答:分析一下:*(a+i)[j]。1.首先,因为[]优先级(顶级)高于*(次顶级),所以应先算[]。所以先只看(a+i)[j]。2.然后,这里一堆的东西不好看,做个简化:因为a是二维数组的名字,故a+i是第i行的行指针,相当于一个一位数组的数组名。把a+i记作x,那么(a+i)[j] 就可以记成 x[j]...

求大神解答一道简单的c语言编程问题。 题目:编一函数实现一个n*n的矩 ...
答:include <stdio.h>#include<stdlib.h>#include<math.h>void Transpose(int a[][10],int n);main(){int n; //储存矩阵的大小int i,j; int a[10][10]={0}; //定义一个最大范围的数组储存矩阵printf("Input n:");scanf("%d",&n);//用户按顺序输入一个矩阵printf("Input %d*...

一个关于C语言的问题 求老鸟解答 满意了给高分
答:执行if(m++>5)时,是先判断后++ 所以此时m=5,所以if为假 跳到else语句,此时m才执行++语句,则m=6 printf语句中先输出m=6的值,才执行m-- 所以以后用的值为5,但是printf语句输出为6