1.定义变量int i; 然后对变量i进行强制类型转换运算:double(i); 运算结束后,变量i的类型转换为double类型. (F)
2.对于有返回值的return语句,用它可以返回一个表达式的值,从而实现函数之间的信息传递 (T)
3.如果默认参数的函数声明为“ void fun(int a,int b=1,char c='a',float d=3.2);”, 则下面调用写法正确的是( )。 (B)
A.fun();
B.fun(2,3);
C.fun(2, ,'c',3.14)
D.fun(int a=1);
4.关于函数的返回值的说法,正确的是: (c)
A.函数必须有返回值
B.函数可以有多个返回值
C.函数可以有一个返回值
D.函数的返回值个数不确定
5.以下程序中,new语句干了什么。(c)
int** num;
num = new int* [20];
A.分配了长度为20的整数数组空间,并将首元素的指针返回。
B.分配了一个整数变量的空间,并将其初始化为20。
C.分配了长度为20的整数指针数组空间,并将num[0]的指针返回。
D.存在错误,编译不能通过。
6.以下程序存在的问题是: (c)
void fun()
{
int *num1, *num2;
num1 = new int[10];
num2 = new int[20];
num1[0] = 100;
num2[0] = 300;
num1 = num2;
delete [] num1;
}
A.num2不能给num1赋值
B.num2最初指向的空间没有释放
C.num1最初指向的空间没有释放
D.程序没有问题
7.一道编程题之优化
输入一个正整数 repeat (0<repeat<10),做 repeat 次下列运算:
输入一个时间数值,再输入秒数 n,输出该时间再过 n 秒后的时间值,时间的表示形式为时:分:秒,超过 24 时从 0 时重新开始计时。
输出格式: printf("time: %d:%d:%d\n", );
输入输出示例:括号内为说明,无需输入输出
输入样例:
3 (repeat=3)
0:0:1 59 (秒数n=59)
11:59:40 30 (秒数n=30)
23:59:40 301 (秒数n=301)
输出样例:
time: 0:1:0 (0:0:01加上59秒的新时间)
time: 12:0:10 (11:59:40加上30秒的新时间)
time: 0:4:41 (23:59:40加上301秒的新时间)
我的代码:
#include <iostream>
using namespace std;
int main()
{
int a,b,c,d,e;
char f,h;
cin>>a;
for(int i=1; i<=a; i++)
{
cin>>b>>f>>c>>h>>d>>e;
if (d+e>=60)
{
c=c+(d+e)/60;
d=d+e-((d+e)/60)*60;//注意这里/与*抵消吗,nono
}
else
d=d+e;
if(c>=60)
{
b=b+(c/60);
c=c-(c/60)*60;
}
if(b>=24)
b=(b-24)%24;
cout<<"time: "<<b<<":"<<c<<":"<<d<<endl;
}
}
标准代码:(我的没有用%处理方式,故更繁琐)
#include<iostream>
using std::cin;
using std::cout;
using std::endl;
int main()
{
int repeat, hour, minu, sec;
int n = 0;
cin >> repeat;
while (repeat --)
{
hour = minu = sec = 0;
cin >> hour;
cin.ignore();
cin >> minu;
cin.ignore();
cin >> sec;
cin >> n;
sec += n;
if (sec >= 60)
{
minu += sec / 60;
sec = sec % 60;
if (minu >= 60)
{
hour += minu / 60;
minu = minu % 60;
if (hour >= 24)
{
hour = hour % 24;
}
}
}
cout << "time: " << hour <<":" << minu << ":" << sec << endl;
}
return 0;
}
8.判断邮箱合法性
从键盘输入一个邮箱,判断该邮箱是否合法。合法性判定规则是邮箱中必须包含 @ 和 .,但不能包含空格字符,并且 @ 必须在 . 的前面。 提示:使用string类型存储输入的邮箱
in: out:
输入一行表示邮箱的字符串 如果输入字符串符合邮箱合法性规则,则输出legal,否则输出unlegal
我的代码:
#include <iostream>
#include<string>
using namespace std;
int main()
{
int d=-1,e=-1,f=-1;
string c;
cin>>c;
d=c.find("@");
e=c.find(".");
f=c.find(" ");
if(d>=0&&e>=0&e-d>0&&f==-1)
cout<<"legal";
else
cout<<"unlegal";
}
标准代码:(首先我没fast这其实不对的,其次我的语法虽然较巧妙但不规范)
#include<iostream>
#include<string>
using std::cin;
using std::cout;
using std::endl;
using std::string;
int main()
{
string email;
cin >> email;
int dot_pos {-1} , at_pos {-1}, space_at{-1};
at_pos = email.find_first_of('@');
dot_pos = email.find_first_of('.');
space_at = email.find_first_of(' ');
if(dot_pos > at_pos && at_pos != string::npos && dot_pos != email.length() - 1 && space_at == string::npos)
//1、2确保有@与.,3保证.不是最后一位,4即没有空格
cout << "legal" << endl;
else cout << "unlegal" << endl;
return 0;
}
再接再励,加油!!!